사용자가 입력 한 사용자 이름의 유효성을 검사하는 프로그램을 작성 중입니다. 이 프로젝트의 목적 상, 영문자 (대문자 또는 소문자), 숫자 또는 밑줄을 사용할 수 있지만 공백이나 다른 구두점은 사용할 수 없습니다. 또한 총 5 ~ 10 자 사이 여야합니다. 한 번에 한 문자 만 저장할 수 있다는 것을 알고 있기 때문에 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