如果我的 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)。
如果我运行它,我会得到:
仅用于循环:
xxxxxxxx yyyy eee
仅 while 循环:
xxxxxxxx
谢谢。