c - 我正在尝试编写一个 C 程序来将文件中的整数存储到数组中,但它不起作用。有人能帮我吗?
问题描述
好像我不太明白文件流是如何工作的。我的文本文件现在包含以下整数:1 10 5 4 2 3 -6
,但我希望程序能够从文件中读取任意数量的整数,如果它改变的话。
显然我什至没有使用正确的功能。我写的代码如下:
int main() {
printf("This program stores numbers from numeri.txt into an array.\n\n");
int a[100];
int num;
int count = 0;
FILE* numeri = fopen("numeri.txt", "r");
while (!feof(numeri)) {
num = getw(numeri);
a[count] = num;
if (fgetc(numeri) != ' ')
count++;
}
int i;
for (i = 0; i < count; i++) { printf("%d ", a[i]); }
return 0;
}
我希望它用存储的数字打印出数组,但我得到的是:540287029 757084960 -1
有人可以帮助我理解我做错了什么,也许可以告诉我如何正确编写这种代码?
解决方案
我已经根据评论修复了您的代码。我曾经从文件中读取并通过检查和检查是否恰好填充了一个参数fscanf
来限制可以存储在数组中的数字数量。count < 100
fscanf
另外,为了安全起见,我检查了文件是否可以打开。如果无法打开,则只需打印错误消息和return 1
.
int main() {
printf("This program stores numbers from numeri.txt into an array.\n\n");
int a[100] = {0};
int num;
int count = 0;
int i = 0;
FILE* numeri = fopen("numeri.txt", "r");
if (numeri == NULL) {
printf("Can't open file\n");
return 1;
}
while (count < 100 && fscanf(numeri, "%d", &num) == 1) {
a[count++] = num;
}
for (i = 0; i < count; i++) { printf("%d ", a[i]); }
return 0;
}
推荐阅读
- mongodb - 如何通过匿名哈希集中的键获取所有值?
- python - 使用 pandas-groupby 对大 csv 文件进行排序并使用函数 .mean()
- php - 尝试在 Laravel Forge 上安装 Wordpress
- asp.net-core - 我可以在编译时不知道其名称的情况下填充 websharper 模板的漏洞吗
- c# - Payplug api 认证失败
- algorithm - 猜猜猜猜游戏的组数?
- java - 使用 Java 计算 Google 存储桶中的文件行数
- python - Python pandas 问题匹配行、查找索引和创建列
- scala - 来自 xml 节点的 scala-xml 子方法获取尾随空格
- highcharts - 使用 Thingspeak 源的 Highstock/Highcharts 上的每一行都有不同的后缀