J'écris un programme pour valider un nom d'utilisateur saisi par l'utilisateur. Pour les besoins de ce projet, nous devons autoriser les lettres alphabétiques (majuscules ou minuscules), les chiffres ou les traits de soulignement, mais pas d'espaces ni d'autres signes de ponctuation. Il doit également comprendre entre 5 et 10 caractères au total. Je crois que mon problème est avec getchar() car je sais qu'il ne peut contenir qu'un caractère à la fois, mais je ne suis pas entièrement sûr de la meilleure façon de le réparer. Actuellement, lorsque je cours mon code, il ne revient que comme invalide. Ai-je besoin de changer de boucle ou de faire des ajustements? Ou y a-t-il un problème avec ma déclaration if?Travailler avec getchar() dans C
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int ch;
int len = 0;
printf("Enter the username: "); //prompt user to enter a username
ch = getchar();
while (ch != '\n') //while loop checking for length of username
{
len++;
ch = getchar();
}
if(isspace(ch) || ispunct(ch) || len > 10 || len < 5){
printf("invalid input.");
}
else{
printf("valid input.");
}
return 0;
}
Vous devez vérifier le type de caractère dans la boucle. – BLUEPIXY
Similaires [question] (https://stackoverflow.com/questions/46107545/c-language-cant-check-getchar-is-alphabet-or-digit) – BLUEPIXY