Это для l oop
for (int i = 0; t[i] != '\0'; i++)
повторяется до тех пор, пока текущий символ не станет завершающим нулевым символом '\0'
, который является нулевым символом. Таким образом, символ не считается.
В C в заголовке <ctype.h>
объявлена стандартная функция isalpha
, которая определяет, представляет ли символ букву.
Обратите внимание на что пользователь может, например, вводить символы пунктуации в строку. Или он может использовать символ табуляции '\t'
вместо символа пробела ' '
. Например, его ввод может выглядеть как "~!@#$%^&"
без какой-либо буквы.
Так что правильнее было бы написать l oop следующим образом
size_t lettercount = 0;
for ( string s = t; *s; ++s )
{
if ( isalpha( ( unsigned char )*s ) ) ++lettercount;
}
printf("%zu\n", lettercount );
Это выражение
printf("/n");
удаляется. Я думаю, вместо этого вы имеете в виду
printf("\n");
, то есть вы хотите вывести новый символ строки '\ n'. Но этот символ можно вставить в предыдущий вызов printf
, как я показал выше
printf("%zu\n", lettercount );