2013-06-20 5 views
0

파일에서 가져온 텍스트의 단어 수를 세는 프로그램을 작성하려고했습니다. 문제가 있습니다. 컴파일러는이 파일을 프로젝트 폴더에 저장하지만 내 파일을 찾을 수 없습니다. 어떻게해야합니까?텍스트의 단어 수를 const

#include <stdio.h> 
#include <conio.h> 
#include <string.h> 

int words(const char sentence[ ]); 

int main(void) { 
    char sentence[100]; 
    FILE *cfPtr; 

    if ((cfPtr = fopen("C programming.dat", "r")) == NULL) { 
     printf("File could not be opened\n"); 
    } 
    else { 
     fscanf(cfPtr, "%s", sentence); 
    } 

    words(sentence); 
    printf("%d", words(sentence)); 
    getch(); 
    return 0; 
} 

int words(const char sentence[ ]) { 
    int i, length = 0, count = 0, last = 0; 
    length = strlen(sentence); 

    for (i = 0; i < length; i++) 
     if (sentence[i] == ' ' || sentence[i] == '\t' || sentence[i] == '\n') 
      count++; 

    return count; 
} 
+0

시도는 파일 이름 – Rob013

+1

에 공백을 사용하지 그래서 읽기가 더 쉽습니다. –

+1

프로그램을 사용하여 파일을 만들고 하드 드라이브를 검색하여 작업 디렉토리의 위치를 ​​확인하는 것은 어떻습니까? –

답변

0

파일이 작업 디렉토리 (프로그램이있는 폴더)에 없으면 전체 파일 경로를 지정해야합니다. 리눅스 머신에서 이것은 "/home/your-user-name/Desktop/text.txt"과 같을 것이다. Windows 컴퓨터의 경우 "c:\\your\\file\path\\text.txt"이됩니다. 파일이 작업 디렉토리에 있고 프로그램이 여전히 그 파일을 찾을 수 없으면 파일 이름의 공백을 좋아하지 않을 것입니다. CProgramming.dat으로 이름을 지정하고 작동하는지 확인하십시오.

0

나는 선택적 매개 변수로 파일 이름을 받아, 프로그램의 유용성을 향상시키기 위해

int main(ant argc, char *argv[]) { 
    char sentence[100]; 
    const char *filename = "C programming.dat"; 
    FILE *cfPtr; 

    if (argc == 2) 
     filename = argv[1]; 

    if ((cfPtr = fopen(filename, "r")) == NULL) { 
     printf("File '%s' could not be opened\n", filename); 
    } 
    else { 
     int total = 0; 
     while (fgets(sentence, sizeof sentence, cfPtr)) 
      total += words(sentence); 
     printf("%d", total); 
     fclose(cfPtr); 
    } 
    getch(); 
    return 0; 
} 
... 

메모를 시도 할 것이다 : 당신은 당신의 코드를 포맷 할 수 있습니다 검증되지 않은

+0

고맙습니다 ... 파일 열기에 대한 제 문제가 해결되었습니다.하지만 다른 문제가 있습니다. 단어 기능은 단어 수를 계산할 수 없으며, 매번 응답이 0 일 때마다 이유는 무엇입니까? – user2506489

+0

코드를 디버깅 할 수는 있지만 직접 디버깅하는 방법을 배우는 것이 훨씬 유용 할 것입니다. C 프로그래밍 (또는 다른 언어)은 ** 매우 ** 어렵고 비생산적입니다 - 디버거를 사용할 수 없으면 ... 디버거를 시작하는 방법을 알고 있습니까? – CapelliC

+0

예 ... 디버깅을 위해 "Visual Studio"를 사용하지만 대구에 문제가 있다고 생각합니다. – user2506489

관련 문제