사용자 입력이 숫자인지 아닌지를 확인해야하는이 코드가 있는데 숫자인지 여부에 관계없이 "false"가 인쇄됩니다.사용자 입력이 숫자인지 확인하십시오.
if (isdigit(atoi(argv[1])))
{
printf("true");
}
else
{
print("false");
}
이것은 내가 그것을 실행하는 방법이다 : 당신은 다른 기능을 혼동
./filename 2 3
사용자 입력이 숫자인지 아닌지를 확인해야하는이 코드가 있는데 숫자인지 여부에 관계없이 "false"가 인쇄됩니다.사용자 입력이 숫자인지 확인하십시오.
if (isdigit(atoi(argv[1])))
{
printf("true");
}
else
{
print("false");
}
이것은 내가 그것을 실행하는 방법이다 : 당신은 다른 기능을 혼동
./filename 2 3
.
atoi()
(ASCII에서 정수로)은 문자열을 int
으로 변환합니다. 그러나 isdigit()
은 int
이 아닌 단일 문자를 검사합니다.
문자열의 첫 번째 문자를 확인하려면 isdigit((unsigned int) argv[1][0])
만 있으면됩니다. 당신이 더 문자가없는 있는지 확인하려면
, 너무을 확인 : 당신은 atoi
필요하지 않습니다
bool single_digit(const char *s)
{
return s != NULL && isdigit((unsigned int) *s) && s[1] == '\0';
}
다음
single_digit(argv[1]);
를 호출합니다. 대신 정수로 변환하십시오.
if (isdigit((int)argv[1]))
{
printf("true");
}
else
{
print("false");
}
또한, 이와 같이하여 실행 ./filename 3
(즉, 단지 하나 개의 손가락을 파일명 후 두번째 무시되기 때문에).
가장 좋은 방법 : isdigit
및 기타 유사한 방법에 대한 확인 man page : http://linux.die.net/man/3/isdigit
@PLPeeters 물론입니다. 문제의 코드는 다소 모호했습니다. 내가 편집 할게. – unwind