2012-09-10 94 views
-2

我正在使用Ubuntu 12.04。我一直在爲簡單的C++學校項目嘗試一些IDE。 但是,使用codelite,anjuta和kdevelop時遇到了一個問題:當我試圖讀取/寫入文件時,出現段錯誤:核心轉儲。在C++中使用文件時出現分段錯誤

我使用的是基本的來源:

#include<stdio.h> 

FILE*f=fopen("test.in","r"); 
FILE*g=fopen("test.out","w"); 

int main() { 

    int a,b; 
    fscanf(f,"%d %d",&a,&b); 
    fprintf(g,"%d\n",a+b); 

    fclose(f); 
    fclose(g); 

    return 0; 
} 

我不得不說,與標準輸入/輸出工作方案好。

+0

哪條線路故障? –

+4

你需要使用一個調試器,看看它的故障和原因。例如,如果fopen失敗,則f或g可能爲空。 – bmargulies

+0

1)使用調試器。 2)檢查錯誤。 – 2012-09-10 15:29:49

回答

2

最有可能的問題是,要fopen的呼叫沒有成功,也許是因爲你的程序是不是從包含該文件相同的目錄中運行。在這種情況下,指針fg將爲空,並且在將它們傳遞給任何C庫函數之前,您必須檢查該指針。

您還需要檢查fscanf是否成功,否則使用ab將導致不確定的行爲(儘管這將最有可能只是導致程序輸出的垃圾,而不是崩潰)。

你可能會使用從C++庫std::fstream更好;但即使如此,您仍然需要檢查文件流是否已打開並且輸入是否成功讀取。

相關問題