2014-05-04 33 views
-1

我的程序會正常運行並顯示信息,但只要我按任意鍵繼續我得到的程序已停止工作屏幕,我不知道爲什麼,這裏是我的代碼我的c程序在運行完成後崩潰

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

int main(int argc, char *argv[]) 
{ 
    char A[50][30]; 
    printf("Hello \n"); 

    FILE *file; 

    file = fopen("Strings.dat","r"); 



    printf("The contents of the array are :\n"); 

    int ch = 0; 

    while(fgets(A[ch], 30, file)) 
    { 
    int length = strlen(A[ch]); 
    /* 
    if((A[ch][length-1]) == '\n') 
    { 
    A[ch][length-1] = NULL; 
    } 
*/ 
    ch++; 
    } 
    fclose(file); 
    printf("%s",A[0]); 
    system("PAUSE"); 
} 

任何人都可以解釋我做錯了什麼嗎?

如果你想知道註釋代碼被註釋掉了,因爲它給了我一個警告「【警告】賦值時將指針整數,未作施放[默認啓用]」我想取出來會解決我的問題

+0

我看到的唯一情況是你沒有檢查文件是否正確打開。如果'file'是'NULL',那麼文件沒有打開。 – ooga

+0

噢好 - 我的大部分應用程序在運行時崩潰。 –

+1

仔細檢查您正在閱讀的文件的內容和大小。有可能你正在寫數組的邊界之外並砸碎你的堆棧,並且隨着程序結束和堆棧展開而顯現出來。 – Duck

回答

1

嘗試在暫停語句後添加exit(0);。這會告訴你的程序完全退出。 0只是一個返回值。你可以返回任何你想要的,但0是「沒有錯誤」或類似的標準。

編輯:第二個想法,只需在最後添加return 0;。你甚至可能不需要退出(0)語句(這取決於你如何運行你的程序)。

SECOND EDIT:exit()語句只是強制關閉你的應用程序。還有一個潛在的問題。給我一點,我會盡力爲你追蹤。

希望這會有所幫助!

+0

它爲什麼會有幫助? – Duck

+0

偶爾我有一個類似的問題,當我不告訴程序正常退出。我不確定它是否與程序的運行方式或內容有關。我通常在控制檯上運行我的C程序,也許這隻適用於這些情況?嘗試它不會有什麼傷害。 – DerStrom8

+0

是這行代碼阻止了我的程序崩潰 – user3393513