我有以下代码:
int i = 0;
char ar[500];
while(i < 20)
{
printf("Type a line: ");
fgets(ar, 500, stdin);
fprintf(fp,"%s", ar);
i++;
}
基本上,我试图打开一个文件,然后从用户那里获取 20 行输入并将其存储在一个数组中,然后将其打印到文件中。它工作正常,但我不明白 fgets 在 while 循环中是如何工作的。据我了解,当 i = 0 时,fgets 将第一行存储到 ar[500],fprintf 将其打印到文件中,当 i = 1 时,fgets 将第二行存储到 ar[500],但现在是 ar[500]有 2 行,但为什么当我递增 1 时 fprintf 只打印第 2 行而不是所有 2 行等等。
最佳答案
fgets 总是从 arr[0] 开始填充数组。在每次迭代中,前一行都会被覆盖。 fgets 会在 arr 中为你添加空终止符,所以只有当前读取的行会输出到 fp 指向的 FILE 中。
关于C - fgets 如何处理多个调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51355034/