2016-12-04 7 views
-2

私は各行の最初の文字を印刷しようとしていますが、何らかの理由で私のコードが各行の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

可能な複製を

が使用することをお勧めテキストファイルを1行ずつ読み込み、Cの各行の内容を取得する(http://stackoverflow.com/questions/23200822/read-a-text-file-line-by-line-and-retrieve-the-それぞれの行内の内容) –

+0

投稿されたコードにはいくつかの「魔法」の数字が含まれています。 「魔法」の数字は、基準のない数字です。 I. 「魔法」の数字は、コードを理解し、デバッグし、維持することをはるかに困難にします。 'enum'文や' #define'文を使って '魔法'の数字に意味のある名前を付けることを提案し、その意味のある名前をコード全体に使います。 – user3629249

答えて

0

問題は、このコードである:

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

の式:c=fgetc(file)は、各行の最初の文字を読み取り、変数c

にそれを貼り付ける。しかしprintf()への呼び出しがあるさcにある最初の文字ではなく、配列[]の最初の文字を出力します。

関連する問題