首页 > 解决方案 > C - fgets 如何处理多个调用

问题描述

我有以下代码:

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 行,但是为什么 fprintf 只将第 2 行打印到文件而不是所有 2 行,依此类推,当我增加 1 时。

标签: cfilefgets

解决方案


fgets 总是在 arr[0] 处开始填充数组。在每次迭代中,前一行都会被覆盖。fgets 将在 arr 中为您添加空终止字符,因此只有当前读取的行将输出到 fp 指向的 FILE。


推荐阅读