簡體   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