如何读取C中以空格分隔的值?

时间:2017-10-01 20:54:22

标签: c file-io

我有一个.txt文件,我用来学习一些基本的C。

这是txt文件:

8
12  48  15  65  16  82  9   72

这是我的C程序:

#include <stdio.h>
#include <stdlib.h>



int main(int argc, char** argv){

        char num = 0;
        //int[] arr = 0;


        if (argc != 2){
                return 0;
        }

        FILE *inputFile = fopen(argv[1], "r");

        if (inputFile == NULL){
                printf("Error1\n");
                return 0;
        }

        while(!feof(inputFile)){
                num = fgetc(inputFile);
                printf("%c\n",num);
        }

        if(!feof(inputFile)){
                printf("error");
                return 0;
        }

}

我的目标是根据第一行中的值来获取第二行的数组....基本上,我们需要一个包含8个值的数组,它存储{12,48,.... }

2 个答案:

答案 0 :(得分:4)

您使用错误的函数来读取整数:尽管返回int,但函数fgetc正在读取单个字符(why getchar returns an int?)。

为了读取以空格分隔的整数,请改用fscanf,并检查返回值以确定您已到达文件末尾:

int n;
while (fscanf(inputFile, " %d", &n) == 1) {
    printf("%d\n", n);
}

请注意,上面的循环可以避免使用feof来检测文件结束条件(why using feof is wrong?

答案 1 :(得分:1)

如果您的目标是阅读一系列数字(而不是其他内容),无论两者之间的换行符数是多少,您只需使用fscanf,如下所示:

    int num;
    while(fscanf(inputFile, "%d", &num) == 1) {
            printf("%d\n",num);
    }

请注意,fscanf根据格式说明符返回成功​​读取的值的数量,即只要读入了整数值(1,它就会返回0否则)。