我試過這麼多代碼試圖在直方圖中顯示我的數據。我一直被困在這個問題上兩天了,數據爬行互聯網等,以找到答案,但他們通常談論指針和其他。而這是更基本的。我試過一個顯示相同錯誤的實際直方圖,但爲了保持簡單,我選擇發佈這一個。爲什麼我在C中顯示數組時總是出現分段錯誤?
這是該計劃的從C編程語言的描述: 「寫一個程序,打印的字長度的直方圖的投入。」 我做這水平那我會做垂直。雖然在這個例子中,我只是試圖顯示數字,顯然。
#include <stdio.h>
#define MAXIMUM 99
main()
{
int i, c, j, lenOfWord[MAXIMUM], charCount;
for (i = 0; i < MAXIMUM; i++)
lenOfWord[i] = 0;
printf("Starting program, please type then ctrl+d\n");
while((c = getchar()) != EOF) {
if (c == ' ') {
//new word
++lenOfWord[charCount];
charCount = 0;
}
else
//inword
++charCount;
}
printf("\n Displaying now... \n");
for (j = 0; j <= MAXIMUM; j++)
printf("%d: %d", j, lenOfWord[j]);
}
輸出:
[email protected]:~/Desktop> gcc c.c -o c
[email protected]:~/Desktop> ./c
Starting program, please type then ctrl+d
Hello my name is john jacksonSegmentation fault
*在年底分段故障是我所得到的,當我做EOF(CTRL + d)
其他信息:從終端GCC編譯器的openSUSE Linux的
非常感謝,我在努力學習C,但是我碰到過很多這樣的路障,我感到很沮喪。
編譯所有的警告和調試信息('GCC -Wall -Wextra -g')。使用調試器('gdb') – 2014-10-21 21:06:55
'j> = MAXIMUM'?這將在第一次迭代中終止你的循環。 for()的第二個子句是循環終止條件。只要條件評估爲「真」,循環就會繼續執行。你基本上設置你的循環失敗,因爲'0> = 99'是錯誤的。 – 2014-10-21 21:08:00
'int charCount = 0;' – BLUEPIXY 2014-10-21 21:11:11