繁体   English   中英

从文件读取数据到C中的数组错误

[英]reading data from a file into an array error in 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;
}

任何帮助或反馈将不胜感激。

您应该像这样执行程序

./program  file.txt

我不确定我的文件是否在程序中正确打开

然后,您应该对其进行真正的测试,因为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

是的,可以:1)检查您调用它的方式,即

  • 检查“程序”是否是可执行文件,可以在Linux中使用chmod命令使其可执行。
  • 检查“程序”或“ file.txt”的路径是否正确

2)(我不确定):检查“ file.txt”的内容是否正确。 (我认为它不会在引起分段错误的程度上产生影响,但还是要对其进行检查。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM