Это l oop
for(int i=0 ; i<50; i++)
неверно. Введенная строка может быть меньше, чем размер массива символов str
.
. Вместо этого используйте
for( size_t i = 0 ; str[i] != '\0'; i++ )
. Примите во внимание, что функция fgets
может добавить символ новой строки \n'
к введенной строке. Если вы хотите удалить его до l oop, напишите
#include <string.h>
//…
str[strcspn( str, "\n" )] = '\0';
Также в операторах if вы должны преобразовать данный символ в тип unsigned char
. Например,
if( isalpha( ( unsigned char )str[i] ) != 0)
или
if( isalpha( ( unsigned char )str[i] ) )
В противном случае, как правило, без приведения такого вызова может вызвать неопределенное поведение, если код символа отрицательный.