Вывод был выполнен ровно 10 раз.
Проблема в том, что функция getchar также считывает символы пробела, например, символ новой строки '\n'
, который соответствует нажатой клавише Enter.
Вместо getchar используйте функцию scanf, например
scanf( " %c", &c );
Обратите внимание на пробел перед символами% c. Необходимо пропустить символы пробела.
Программа может выглядеть, например, следующим образом.
#include <stdio.h>
int main(void)
{
const int N = 10;
char c;
for ( int i = 0; i < N && scanf( " %c", &c ) == 1; i++ )
{
printf( "%c\n", c );
}
return 0;
}
Если вы хотите использовать getchar
, вам следует объявить переменную c
как имеющий тип int
.
В этом случае ваша программа может выглядеть следующим образом
#include <stdio.h>
int main(void)
{
const int N = 10;
int c;
int i = 0;
while ( i < N && ( c = getchar() ) != EOF )
{
if ( c != '\n' )
{
printf( "%c\n", c );
i++;
}
}
return 0;
}