gpt4 book ai didi

c - isdigit() 返回错误结果?

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:20 25 4
gpt4 key购买 nike

我总是通过使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com