c - FILE* 返回初始化变量并插入 FILE* 的输出中读取
问题描述
问题:我遇到的问题是我有一个包含 20 个整数的文件,而我要做的就是读取这 20 个整数。这发生在这个程序中......除了在开始时插入了一个附加值,这int num;
是初始化的任何值。即使我删除了初始化,我也会得到一个默认整数值3739648
.
我该如何补救?
int main() {
FILE* fp = fopen("20integers.txt", "r");
int num =0;
fseek(fp, 0, SEEK_SET);
if(fp == NULL) {
return 1;
}
//fseek(fp, 5, SEEK_SET);
while (!feof (fp))
{
printf ("%d ", num);
fscanf (fp, "%d", &num);
}
fclose (fp);
return 0;
}
输出:
0 1 20 17 1 14 12 9 88 61 16 7 11 7 6 31 47 3 47 18 2
Process finished with exit code 0
第一个 ' 0
' 不应该在那里。
解决方案
- 您必须在打印之前读取整数
- 你真的应该测试
fscanf
函数的返回,如果转换失败则退出循环:
while (1)
{
if (1 != fscanf (fp, "%d", &num))
break;
printf ("%d ", num);
}
推荐阅读
- amazon-web-services - 禁止在 sns:ListTopics 上使用通配符资源
- python - 那是什么类型的错误?
- excel - 连接区域中的行和区域中的列
- json - 将列表转换为 Groovy 中的地图列表
- raspberry-pi - 树莓派 pico usb 在 Windows 上调试
- javascript - 如何解决/修复此问题 throw new TypeError('app.use() requires a middleware function') 在节点 js 中启动服务器时
- python - 使用python从json中提取csfr令牌
- express - 减少我的 Express 应用程序的代码大小
- flutter - 颤振 | 获取 Firebase 电子邮件链接登录数据
- selenium - 如何在机器人框架中忽略全局导入中的导入文件