Я возвращаюсь в кодировку через несколько лет из школы, и я застреваю, пытаясь написать программу на C, которая учитывает сколько n-буквенных слов находится в тексте, сохраняя их в массиве длины n, а затем печатая их. Проще говоря, я предположил, что n - это b/w 1 и 10, и каждое слово разделено ровно на одно место.Программа C для подсчета числа n-буквенных слов в тексте, застрявшем во вложенном цикле
Код, однако, кажется, моя программа никогда не выходит из внутреннего цикла, поэтому на экране ничего не печатается. Я попытался напечатать что-то в конце этого цикла, чтобы проверить его, и по какой-то причине программа печатает его столько раз, сколько символов (включая пробелы, которые внутреннее условие должно улавливать и выходить). Я что-то забыл?
main()
{
int c, i, j, counter;
counter = 0;
int wlength [10];
for (i=0; i<10; ++i) //initialize array
wlength[i]=0;
while((c=getchar())!=EOF){ // keep taking input until end of file
while (c!=' '){ //keep counting until you reach the end of the word
++counter;
c=getchar();
}
wlength [counter-1]++; //increment the counter for that word length
counter=0 ; //reset the counter for the next word
}
for (j=0;j<10;++j) //print the array
printf("%d ", wlength[j]);
Вам необходимо проверить EOF. Вы проверяете только во внешнем цикле. – stark
Не последний символ каждой строки новой строки (\ n или \ r \ n)? – Roger
try 'while (c! = '' && c! = '\ N' && c! = EOF) {' вместо 'while (c! = '') {' – BLUEPIXY