-1
我一直在拉我的頭髮,因爲這永遠。我是C語言的新手。它不斷給我一個「分段錯誤:11」的錯誤信息。我無法弄清楚什麼是錯的。緩衝區引起的分割錯誤11?
我認爲問題可能在於我的代碼如下段:
int counter = 21;
char load[counter];
while(fgets(load, 81, input) != NULL)
我一直在拉我的頭髮,因爲這永遠。我是C語言的新手。它不斷給我一個「分段錯誤:11」的錯誤信息。我無法弄清楚什麼是錯的。緩衝區引起的分割錯誤11?
我認爲問題可能在於我的代碼如下段:
int counter = 21;
char load[counter];
while(fgets(load, 81, input) != NULL)
你有一個內存訪問問題。您有:
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
當你最終做'fgets(buffer,81,input)'時,可能分配'buffer [21]'不是正確的事情嗎? – EOF 2015-02-11 22:03:30
認真嗎?分配足夠大的緩衝區!你期望什麼,「做一個桶滾」? – EOF 2015-02-11 22:06:20