я использовал getchar()
остановить строку while. Моя проблема заключается в том, что она останавливает строку while, если я набираю один или два символа, если пользовательский ввод больше двух символов, ничего не происходит.
вот код:
printf("enter srting\n");
while ((tmp=getchar()) !='\n') { \\here is my problem
count_letters++;
/* COUNTING WORD THAT START WITH LETTES L,A,C,H */
while (count_letters%3==0) {
switch (tmp) {
case 'A': count_a++;
break;
case 'C': count_c++;
break;
case 'H': count_h++;
break;
case 'L': count_l++;
default:
break;
}
} /* end of count letters while */
n1=n2;
n2=n3;
n3=tmp;
if (n1=='H' && n2=='Y' && n3=='A') {
count_hya++;
}} /* end of getchar while */
printf("\n");
printf("%d", count_letters);
Вот проблема:
while (count_letters%3==0) {
switch (tmp) {
case 'A': count_a++;
break;
case 'C': count_c++;
break;
case 'H': count_h++;
break;
case 'L': count_l++;
default:
break;
}
}
когда ваш третий символ читается, ваша программа входит в бесконечный цикл из-за (count_letters% 3 == 0)
Я не могу понять цель вашего кода.
Я предлагаю использовать функции get () и манипуляции со строками, потому что вы обрабатываете всю строку. (см. string.h)
getchar () также менее эффективен по сравнению с get () + for-loop