我有一个.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,.... }
答案 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
否则)。