将文件中的数据读入C中的数组错误

时间:2014-04-26 12:58:06

标签: c

我试图通过终端使用行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;
}

非常感谢任何帮助或反馈。

3 个答案:

答案 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;
}

fopenNULL因为您以错误的方式调用该程序,<>是重新指示,这可能很有用,但不是您的意思在这种情况下正在尝试做,正确的调用方法是简单地直接传递参数。

./program input.file

答案 2 :(得分:0)

是的,要么: 1)检查你调用它的方式,即

  • 检查&#39;程序&#39;是一个可执行文件,您可以使用linux中的chmod命令使其可执行文件
  • 检查&#39;程序&#39;的路径。或者&#39; file.txt&#39;是正确的

2)(我不确定):检查&#39; file.txt&#39;的内容。是正确的内容。 (我不认为它会影响到导致分段错误的程度,但仍然检查它。)