我试图通过终端使用行program < file.txt
从命令提示符中指定的文件中读取,然后再次打印以检查它是否有效。我收到错误Segmentation fault: 11
,我不确定我的文件是否在我的程序中正确打开。
这是到目前为止的代码:
#define MAX 1000
int
main(int argc, char *argv[]) {
FILE *fp;
double values[MAX];
fp = fopen(argv[1], "r");
fscanf(fp, "%lf", values);
printf("%f\n", *values);
fclose(fp);
return 0;
}
非常感谢任何帮助或反馈。
答案 0 :(得分:5)
你应该像
那样执行你的程序./program file.txt
答案 1 :(得分:1)
我不确定我的文件是否在我的程序中正确打开
然后你应该真的测试它,你得到一个段错误,因为fopen
正在返回NULL
。
#include <stdio.h>
#define MAX 1000
int
main(int argc, char *argv[]) {
FILE *fp;
double values[MAX];
fp = fopen(argv[1], "r");
if (!fp) {
printf("Invalid file name \n");
return -1;
}
fscanf(fp, "%lf", values);
printf("%f\n", *values);
fclose(fp);
return 0;
}
fopen
是NULL
因为您以错误的方式调用该程序,<
和>
是重新指示,这可能很有用,但不是您的意思在这种情况下正在尝试做,正确的调用方法是简单地直接传递参数。
./program input.file
答案 2 :(得分:0)
是的,要么: 1)检查你调用它的方式,即
2)(我不确定):检查&#39; file.txt&#39;的内容。是正确的内容。 (我不认为它会影响到导致分段错误的程度,但仍然检查它。)