Как уже упоминалось в других ответах, вам необходимо убедиться, что вы проверяете первый символ.
Кроме того, если вы считаете, что пустая строка состоит из буквенных символов, вы должны четко задокументировать это (фактически вы должны четко задокументировать, что пустая строка в любом случае).
Наконец, isalpha()
принимает только те аргументы, которые могут быть представлены как unsigned char
или равны EOF
. Если ваша подпрограмма скомпилирована на платформе, где подписано char
, возможно, вы нарушаете это ограничение.
Вот версия sisalpha()
, которая исправляет эти проблемы (пустая строка возвращает 1
- я не уверен, что вы этого хотите или нет):
int sisalpha(const char *s) {
for (; *s != 0; ++s) {
unsigned char c = *s;
if (!isalpha(c)) return 0;
}
return 1;
}