Я хочу создать программу, которая только принимает символы нижнего регистра от пользователя. И я хочу, чтобы он печатал ошибку всякий раз, когда есть пробел, заглавная буква на входе или любой символ рядом с алфавитом. Но мой код ведет себя непредвиденным образом, я не уверен, почему. Сообщение об ошибке печатается, только если пробел или заглавная буква были первым символом, который был введен во вход. Как это возможно, хотя я просматриваю всю строку с помощью fgetc, ищущего пробел?Обнаружение пробелов во входных данных
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main (void)
{
char buff[BUFSIZ];
char ch = fgetc(stdin);
if (fgets(buff, sizeof buff, stdin) != NULL && islower(ch)) {
while (ch != ' ' && ch != EOF)
{
printf("There are No Spaces in the input!\n");
return 0;
}
}
printf("Error\n");
}
Спасибо за вашу помощь, заранее
[для проверки использования пробелов 'isspace'] (http://stackoverflow.com/q/15326729/995714), а [' fgets' возвращает 'int', а не' char'] (http: // stackoverflow .com/q/8464030/995714), потому что EOF и код символа 0xFF различаются –
«Я хочу создать программу, которая принимает только символы нижнего регистра от пользователя». и «печатать ошибку всякий раз, когда есть пробел ...» - >> Итак, вы хотите «принять» и нижний регистр, и пробел и т. д., просто делать с ними разные вещи? – chux
@chux Я не хочу принимать пустое пространство, я хочу обнаружить их и напечатать ошибку, когда они находятся на входе – SpeedGoat