C - fgets 如何处理多个调用

标签 c file 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 行,但为什么当我递增 1 时 fprintf 只打印第 2 行而不是所有 2 行等等。

最佳答案

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

关于C - fgets 如何处理多个调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51355034/

相关文章:

android - 安全发送电子邮件附件

C - fgets 返回损坏的数据

c - 如何将元素插入到 malloc 上的数组中?

c - c 中的字符串和结构

java - 从junit测试中的测试/资源获取文件名路径

linux - 检查文件的所有行是否包含在另一个文件中

C 段错误 : 11 fgets

c++ - fgets 与 std::fgets - fgets 错过了行

c - Posix 消息 mq_open 的错误地址

C、从文件读入结构