我的目标是读取一个txt文件(small_ramp.txt),然后输入除第一个数字之外的所有数字到一个数组。文件上有11行数字,第一行数字10表示数字有多少在文件中然后是以下10个数字(1-10)Small_ramp.txt。在命令提示符下,我输入Stats.exe<执行此命令时,small_ramp.txt我Error收到此错误消息。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int n, i;
FILE* fpointer;
double *arr;
fpointer = fopen(argv[1], "r");
if (argc != 2) {
printf("ERROR: you must specify file name!\n");
return 1;
}
if (!fpointer) {
perror("File open error!\n");
return 1;
}
fscanf(fpointer, "%d", n);// Scan first line of small_ramp.txt to find array size
arr = (double*)malloc(sizeof(double) * n);// allocate memory for array with the size given (n)
while (!feof(fpointer)) {
fscanf(fpointer, "%lf", arr + 1);
}
for (int i = 0; i < n; ++i)
{
printf("%lf,", arr[i]);
}
fclose(fpointer);
return 0;
}
我想我的问题是我是否正确阅读了文件,如果是这样,有人会指出我正确的方向来修复此错误吗?
答案 0 :(得分:1)
argv[1]
检查之前的参数数量。fscanf()
会调用未定义的行为。使用fscanf(fpointer, "%d", &n);
代替fscanf(fpointer, "%d", n);
。arr[1]
。因此,arr[0]
具有不确定的值,并使用该值调用未定义的行为。%f
代替%lf
通过double
打印printf()
值。