ユーザが入力したユーザ名を検証するプログラムを作成しています。このプロジェクトでは、英字(大文字または小文字)、数字または下線を使用できますが、スペースや句読点は使用できません。また、合計5〜10文字でなければなりません。 一度に1文字しか保持できないことがわかっているので、私の問題はgetchar()だと思いますが、それを修正する最良の方法は完全にはわかりません。現在、私は自分のコードを実行すると、無効なものとしてしか戻らない。ループを変更したり調整したりする必要がありますか?またはif文に問題がありますか?C言語のgetchar()の使用
#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;
}
あなたがループ内で、文字の種類を確認する必要があります。 – BLUEPIXY
類似[質問](https://stackoverflow.com/questions/46107545/c-language-cant-check-getchar-is-alphabet-or-digit) – BLUEPIXY