如何检查输入字符串是否由整数组成

时间:2012-12-06 04:09:12

标签: c string while-loop

我正在尝试创建一个while循环,其中条件检查字符串的前四个元素不是整数。这是我的代码,不知怎的,它不起作用。我尝试使用ctype.h头文件中的isdigit函数。

char tr_code[200];
char *endptr;

scanf("%s", &tr_code);
fd_code=strtol(tr_code,&endptr,10);

while(strlen(tr_code)!=4 && isdigit(tr_code[0])==0 && isdigit(tr_code[1])==0 && isdigit(tr_code[2])==0 && isdigit(tr_code[3])==0)
{
    printf("\nInvalid Code. please enter another '4-digit' Code: ");
    scanf("%s", &tr_code);
    fd_code=strtol(tr_code,&endptr,10);
}

2 个答案:

答案 0 :(得分:2)

您使用的是&&,但您应该使用||

while(strlen(tr_code) != 4 || !isdigit(tr_code[0]) || !isdigit(tr_code[1]) || !isdigit(tr_code[2]) || !isdigit(tr_code[3]))

对于&&,任何四个字符长的输入,或前四个位置中的任何一个都有一个数字(即使该内存是最后一个输入的剩余部分,因为该字符串可能更短)将通过。

答案 1 :(得分:0)

IIRC'scanf'签名返回一个整数,即终端读取的字符数。