2012-04-16 50 views
0

努力學習C.想讀取文本文件的第一行,我的代碼是:閱讀文本C.得到一個壞的exec錯誤

#include <stdio.h> 
int main() 
{ 

    FILE *in = fopen("test.txt", "rt"); 
    // read the first line from the file 
    char buffer[100]; 
    fgets(buffer, 20, in); 
    printf("first line of \"test.txt\": %s\n", buffer); 
    fclose(in); 
    return 0; 
} 

我在Xcode這樣做。我得到一個不良訪問錯誤。 test.txt肯定存在。它有一行說「這是一個文本文件」

+2

檢查返回值的fopen()'。僅僅因爲它存在並不能保證打開的嘗試會成功。 – hmjd 2012-04-16 20:01:18

+1

聽起來像'fopen()'沒有成功。在做某件事之前,確保它的返回值不是空指針。如果它是空指針,則可能存在文件權限問題。 – Maxpm 2012-04-16 20:02:18

+0

'rt'中的't'是什麼意思? – Jack 2012-04-16 20:03:22

回答

0

該代碼看起來很好,所以我的猜測是該程序不是在與該文件相同的工作目錄中運行。嘗試將文件放在/tmp/test.txt中,並在fopen中使用絕對路徑。

+0

雅就是這樣。謝謝! – JoshDG 2012-04-16 20:04:45

0

您不檢查FILE是否爲NULL。它可能由於幾個原因而不能打開。

1

試試這個後fopen()電話:

if(in == NULL){ 
    printf("Can't read teste.txt because: %s.\n", strerror(errno)); 
    return 1; 
} 

,並添加標題:從`

#include <errno.h> 
#include <string.h>