2015-02-11 52 views
-1

我一直在拉我的頭髮,因爲這永遠。我是C語言的新手。它不斷給我一個「分段錯誤:11」的錯誤信息。我無法弄清楚什麼是錯的。緩衝區引起的分割錯誤11?

我認爲問題可能在於我的代碼如下段:

int counter = 21; 


char load[counter]; 


while(fgets(load, 81, input) != NULL) 
+0

當你最終做'fgets(buffer,81,input)'時,可能分配'buffer [21]'不是正確的事情嗎? – EOF 2015-02-11 22:03:30

+0

認真嗎?分配足夠大的緩衝區!你期望什麼,「做一個桶滾」? – EOF 2015-02-11 22:06:20

回答

1

你有一個內存訪問問題。您有:

int B = 21; 

... 

char buffer[B]; 

... 

while(fgets(buffer, 81, input) != NULL) { 

既然你正在訪問buffer出界,你的程序是受到不確定的行爲。您可以通過確保您在調用fgets()時使用B而不是81來解決此問題。如果您想要將81字符一次讀入buffer,請將B的值設置爲81

int B = 81; // 81 instead of 21 

... 

char buffer[B]; 

... 

while(fgets(buffer, B, input) != NULL) { // B instead of 81