首页 > 解决方案 > 在 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 等存储到一个索引中感到困惑?

标签: cfiletext-files

解决方案


这是因为您一次只能读取 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);


推荐阅读