c - 在 C 中,他们无论如何都是逐行读取文件内容并将每个整数值(前行)分别存储到数组中的方式吗?
问题描述
我的 C 代码是这样的:
#include <stdio.h>
int main( int argc, char ** argv){
FILE *myFile;
myFile = fopen("numbers.txt", "r");
//read file into array
int numberArray[16];
for (int i = 0; i < 16; i++){
fscanf(myFile, "%1d", &numberArray[i]);
}
for (int i = 0; i < 16; i++){
printf("Number is: %d\n", numberArray[i]);
}
}
我的 numbers.txt 文件包含以下值:
5
6
70
80
50
43
但由于某种原因我的输出
Number is: 5
Number is: 6
Number is: 7
Number is: 0
Number is: 8
Number is: 0
Number is: 5
Number is: 0
Number is: 4
Number is: 3
Number is: 0
Number is: 0
Number is: 4195904
Number is: 0
Number is: 4195520
Number is: 0
但是我希望它打印出 numberArray 以打印出文本文件的相同内容。我不确定它为什么会这样做,有没有人碰巧知道原因?我知道我正在制作一个比我可以存储的值更大的数组,但我仍然对它为什么不能将 70、80 等存储到一个索引中感到困惑?
解决方案
这是因为您一次只能读取 1 个数字。
因此更改以下内容。
fscanf(myFile, "%1d", &numberArray[i]);
至
fscanf(myFile, "%d", &numberArray[i]);
并且您的数组应该是文件中整数的大小。
int numberArray[6];
for (int i = 0; i < 6; i++)
或者
while (fscanf(myFile, "%d", &numberArray[i++]) == 1);
推荐阅读
- javascript - 带有 Next.js 的自定义脚本
- c++ - 完美的转发和dll导出
- angular6 - Valor Software - ngx bootstrap Alert 组件在 Angular 6 中以编程方式具有关闭按钮?
- c# - 如何使用 C# 显示 XML 的层次结构
- php - 循环遍历数组相关模型,创建一个嵌套数组
- sql-server - 使用 SSIS 远程连接到 SQL Server
- electron - 制作电子应用程序 oneClick 以进行更新,但不用于首次安装
- php - 有没有办法用默认的 Bootstrap 4 小部件 Yii2 制作侧边栏
- django - plt.close() 或 plt.clf() 不会影响图像
- javascript - 如何隐藏
文本区域中的标签?