Я пробовал столько кода, пытаясь отобразить мои данные в гистограмме. Я застрял в этой проблеме в течение двух дней, данные, просматривающие Интернет и такие, чтобы найти ответ, но обычно говорят о указателях и ect. в то время как это намного более основательно. Я пробовал фактическую гистограмму, которая отображала ту же ошибку, но ради сохранения ее просто я решил опубликовать ее.Почему я всегда получаю ошибки сегментации при отображении моего массива в 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, но я ударил много дорожных блоков, подобных этим, я расстраиваюсь.
Compile со всеми предупреждениями и отладочной информации ('НКУ -Wall -Wextra -g'). Используйте отладчик ('gdb') –
' j> = MAXIMUM'? Это закончит ваш цикл на первой итерации. второе предложение 'for()' является условием завершения цикла. Пока условие оценивается как «true», цикл продолжает выполняться.Вы в основном настраиваете свои циклы на сбой, так как '0> = 99' является ложным сразу с места в карьер. –
'int charCount = 0;' – BLUEPIXY