2014-10-29 44 views
1

我有幾次在OJ系統上進行代碼測試,並且結果在特定的第3次和第4次運行中持續報告錯誤「運行時錯誤退出代碼6」,其中一次測試包含10次運行。除了這兩次失敗的跑步之外,其他人都是正確的。如何解決C代碼中報告的錯誤「運行時錯誤退出代碼6」?

我在網上查到「運行時錯誤退出碼6」的意思是「無效的文件句柄」,但我甚至沒有文件變量或任何涉及到文件的進程。

我試圖刪除不理想的頭文件,只剩下兩個頭文件: #include <stdio.h> #include<string> 但它沒有工作。 所以也許你們中的一些人可以幫助我離開這裏。非常感謝......我用C.

這裏是我的代碼

scanf("%d\n",&n); 

    int *A = new int[n]; 

    for(i = 1; i<n+1; i++) { 
     scanf("%d ",&A[i]); 
    } 
    scanf("\n"); 
+3

如果您希望我們提供幫助,您需要發佈您的代碼。我們是好的,但不mindreaders ..(也''#包括'應該'#包括') – 2014-10-29 01:24:16

+0

請張貼您的代碼!但是,SIGABRT是信號編號6 ..您應該使用#include 。你正在使用哪種編譯器? – gmas80 2014-10-29 01:24:20

+0

我發佈了我的代碼,並將頭文件更改爲string.h。 OJ系統使用gcc編譯器。 – Moby41 2014-10-29 01:37:58

回答

1
int *A = new int[n]; 

for(i = 1; i<n+1; i++) { 
    scanf("%d ",&A[i]); 
} 

A的合法指數取值範圍爲[0,N-1]而不是[1,N] 。因此該循環的最後一個scanf()寫出數組邊界。

+0

,但對於其他八個運行,它進行得很順利......好吧,我會嘗試根據你的建議進行調整 – Moby41 2014-10-29 01:45:07

+0

偉大的,我把數組的大小擴展到n + 1,現在它可以工作。謝謝。 – Moby41 2014-10-29 01:56:18