簡體   English   中英

從C中的文本文件讀取時發生意外錯誤

[英]Unexpected error when reading from a text file in C

我正在嘗試從文件中讀取文本(應該很容易吧?)。 據我所知,語法應類似於

FILE *filename;
filename = fopen("filename.txt", "r"); /*when file is the same 
                                        folder of the .exe*/

下面是我的代碼。 當我運行它時,我只會得到“錯誤”,這是發生錯誤時我想要的提示。 我在這里包括了一個全局結構聲明,因為它實際上是代碼中的另一件事,盡管我很肯定它不會對打開文件造成任何問題。

#include <stdio.h>
#include <stdlib.h>

struct list {
    char subject[20];
    char prof_name[20];
    char prof_surname[20];
    char period[20];
    int credits;
    int pass_rate;
};

int main()
{
    struct list data[80];

    FILE *prof;

    prof = fopen("professor.txt", "r");

    if (prof == NULL) {
        fprintf(stderr, "Error");
        exit(EXIT_FAILURE);
    }
return 0;
}

該文件具有正確的名稱和擴展名,與.exe位於同一文件夾中(我也嘗試過使用該地址,但仍會執行相同操作)。 我覺得如果再看一分鍾代碼,我就會發瘋。 我一定有什么想念的

關於注釋“當文件是.exe的相同文件夾時”,這是不正確的。

相反,相對路徑(如您的professor.txt )是相對於進程當前工作目錄的相對路徑。 這可能與.exe文件的位置有很大不同。

我的猜測是,您正在Visual Studio(或其他IDE)中運行,它將可執行文件放在子目錄中。 但是,運行時的工作目錄通常是項目的根目錄。

因此,或者在運行程序時進入項目設置並更改工作目錄到文件所在的目錄中,或者將文件移動到實際的工作目錄中。


您可以使用_getcwd函數獲取流程工作目錄,以驗證它是否是您認為的樣子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM