Je souhaite créer un programme qui accepte uniquement les caractères minuscules de l'utilisateur. Et je le veux pour imprimer une erreur chaque fois qu'il y a un espace, une lettre majuscule dans l'entrée ou n'importe quel caractère à côté de l'alphabet. Mais mon code se comporte d'une manière inattendue, je ne sais pas pourquoi. Le message d'erreur est imprimé uniquement si un espace ou une lettre majuscule est le premier caractère entré dans l'entrée. Comment est-ce possible même si je scanne toute la chaîne avec fgetc à la recherche d'un espace?Détecter les espaces blancs dans l'entrée
#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");
}
Merci pour votre aide à l'avance
[pour vérifier l'utilisation des espaces 'isspace'] (http://stackoverflow.com/q/15326729/995714), et [' fgets' renvoie 'int', pas' char'] (http: // stackoverflow .com/q/8464030/995714), parce que EOF et le code de caractère 0xFF sont différents –
"Je veux faire un programme qui n'accepte que les caractères minuscules de l'utilisateur." et "imprime une erreur chaque fois qu'il y a un espace ..." - >> Donc vous voulez "accepter" à la fois les minuscules et les espaces blancs, etc., faire juste des choses différentes avec eux? – chux
@chux Je ne veux pas accepter les espaces, je veux les détecter et imprimer l'erreur quand ils sont dans l'entrée – SpeedGoat