我正在使用C来开发我的迷你项目。因此,当我将它用于char(比如char a)并使用scanf("%c",&a);
获取输入时,这里的isdigit()工作正常。但是当我将它用于字符串时它会失败
(比如char a [5])并用scanf("%s",a);
得到它。
我希望如果我将输入设为55 isdigit(),它应该评估为true,而不是当我将输入视为“Wd”时。
答案 0 :(得分:1)
isdigit()
只能接收一个字符作为参数。
它无法理解字符数组。
如果char a[5]
位于内存中的0x38383838,isdigit(a);
虚拟为isdigit(0x38383838);
。
所以它会返回0(或错误)。
如果你想测试一个字符数组是否是数字,那么你应该
int isdigit_array(char *a){
int num = strlen(a);
if(num == 0) return 0;
int flag_isdigit = 1;
int i;
for(i=0; i<num; i++){
flag_isdigit = flag_isdigit && isdigit(a[i]);
}
return flag_isdigit;
}