2016-12-04 1 views
-2

각 줄의 첫 번째 문자를 인쇄하려고하는데 어떤 이유로 내 코드가 각 줄의 두 번째 요소를 인쇄합니까?파일에서 잘못된 문자가 인쇄됩니까?

내 코드 :

int main(int argc, const char * argv[]) { 
    FILE *file; 
    char c; 
    char array[150]; 
    file = fopen("/Users/bqas/Desktop/m/m/dict", "r"); 
    while((c=fgetc(file))!= EOF){ 
     fgets(array, 150, file); 
     printf("%c",array[0]); 
     printf("\n"); 
    } 
    return 0; 
} 

텍스트 라인의 일부;

a un, uno, una[Article] 
aardvark cerdo hormiguero 
aardvark oso hormiguero[Noun] 
aardvarks cerdos hormigueros 
aardvarks osos hormigueros 
+3

:

은 사용하는 것이 좋습니다의'(! (C =는 fgetc (파일)) = EOF)이 {'각 라인의 시작에 1 개 문자를 소비하면서 ... –

+1

가능한 중복을 [ 줄 단위로 텍스트 파일을 읽고 C에서 각 줄의 내용을 검색하십시오. (http://stackoverflow.com/questions/23200822/read-a-text-file-line-by-line-and-retrieve-the- 각각의 줄 내용은 –

+0

게시 된 코드에는 '마법'번호가 포함되어 있습니다. '마법'숫자는 근거가없는 숫자입니다. I.E. 150. '마술'숫자는 코드를 이해하고, 디버그하고, 유지하는 것을 훨씬 어렵게 만듭니다. 'enum' 문이나'#define' 문을 사용하여 'magic'번호에 의미있는 이름을 부여한 다음 코드 전체에서 그 의미있는 이름을 사용하십시오. – user3629249

답변

0

문제는이 코드에 있습니다

while((c=fgetc(file))!= EOF){ 
    fgets(array, 150, file); 
    printf("%c",array[0]); 

표현 : c=fgetc(file)은 각 행의 첫 번째 문자를 읽고 변수 c

로를 고집하지만 printf()에 대한 호출입니다 c에있는 첫 번째 문자가 아니라 배열 []의 첫 번째 문자를 인쇄합니다.

예상됩니다
관련 문제