c - 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 时。
解决方案
fgets 总是在 arr[0] 处开始填充数组。在每次迭代中,前一行都会被覆盖。fgets 将在 arr 中为您添加空终止字符,因此只有当前读取的行将输出到 fp 指向的 FILE。
推荐阅读
- wordpress - 如何在 wordpress 结帐页面上更改货币?
- c# - web.config - 忽略特定文件夹的重写
- node.js - 在 Nodejs 中创建一个全局电子邮件功能
- python - Python包无法导入
- ios - 如何存储基于用户ID的图像上传
- java - 如何让 jersey 和 @webservlet 一起工作
- css - 如何设置 Angular 材料数据表的各个行的样式?
- kubernetes - 让序数索引为 0 的 Kuberentes StatefulSet Pod 停止服务?
- php - 致命错误:允许的内存大小为 536870912 字节已用尽(尝试分配 1023 字节)
- python - 从 Spyder 的网站导入 CSV 文件?