我总是通过使用 isdigit() 函数将任何长度为 2 的数字字符串检测为非数字,这是代码:
void testdigi(){
char* tt="22";
char* tt2= "222222222";
for(int i=0;i<sizeof(tt)/sizeof(char);i++)
if (!isdigit(tt[i])) printf("22 not digital\n");
for(int i=0;i<sizeof(tt2)/sizeof(char);i++)
if (!isdigit(tt2[i])) printf("222222222 not digital\n");
}
我不知道为什么22没有被检测为数字, 那怎么了?以及如何解决问题? 谢谢。
最佳答案
您的问题是您认为指针上的 sizeof
给出了它指向的对象的大小。提示:它为您提供了指针的大小(在 32 位机器上通常为 4 个字节,在 64 位机器上通常为 8 个字节)。
要么使用 strlen
获取字符串的长度,要么使用数组代替指针。
此外,即使您使用指针,您也必须记住它们指向常量 字符串,因此正确的定义应该是例如
const char *tt = "22";
关于c - isdigit() 返回错误结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427264/