fgetsがwhileループにある場合、文字列の半分しか返されません。forループ内にある場合は、文字列全体が返されます。理由は何ですか。
以下のコード:
FILE *fp; // File pointer
char filename[] = "results.tsv";
fp = fopen(filename, "r"); // Open file argv[1] for READ
char s[4096];
int num = atoi(fgets(s, sizeof(s), fp)); // Get first line (number of units in file)
int i;
for(i = 0; i < num; i++)
{
printf("%s", fgets(s, sizeof(s), fp)); // Prints everything
}
while (fgets(s, sizeof(s), fp) != NULL) // Loop until no more lines
{
printf("%s\n", s); // Only prints the x's
}
fclose(fp); // Close file
そしてファイルの内容:
1
xxxxxxxx yyyy eee
大きなスペースはタブ(\ t)です。
実行すると、次のようになります。
Forループのみ:
xxxxxxxx yyyy eee
Whileループのみ:
xxxxxxxx
ありがとう。