C isdigit()返回错误结果?
我总是使用isdigit()函数将任何长度为2的数字字符串检测为非数字字符串,如下代码:C isdigit()返回错误结果?,c,C,我总是使用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)/s
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");
}
void testdigi(){
char*tt=“22”;
char*tt2=“22222”;
对于(int i=0;i您的问题是,您认为指针上的sizeof
给出了指针指向的大小。提示:它给出了指针的大小(在32位机器上通常为4字节,在64位机器上为8字节)
使用strlen
获取字符串的长度,或者使用数组而不是指针
此外,即使使用指针,也必须记住它们指向常量字符串,因此正确的定义是
const char *tt = "22";
您的问题是,您认为指针上的sizeof
给出了指针指向的大小。提示:它给出了指针的大小(在32位机器上通常为4字节,在64位机器上为8字节)
使用strlen
获取字符串的长度,或者使用数组而不是指针
此外,即使使用指针,也必须记住它们指向常量字符串,因此正确的定义是
const char *tt = "22";
为了进行调试,您应该对代码进行如下修改:
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");
else printf("22 is digital\n");
for(int i=0;i<sizeof(tt2)/sizeof(char);i++)
if (!isdigit(tt2[i])) printf("222222222 not digital\n");
else printf("222222222 is digital\n");
}
void testdigi(){
char*tt=“22”;
char*tt2=“22222”;
对于(int i=0;i对于调试,您应该这样修改代码:
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");
else printf("22 is digital\n");
for(int i=0;i<sizeof(tt2)/sizeof(char);i++)
if (!isdigit(tt2[i])) printf("222222222 not digital\n");
else printf("222222222 is digital\n");
}
void testdigi(){
char*tt=“22”;
char*tt2=“22222”;
对于(int i=0;iUsestrlen()
,而不是sizeof()
sizeof(tt)
是sizeof(char*)
,可能是4或8(取决于您的平台)。sizeof(tt)
指针的大小(指向char)。您正在超越第一个数组。不需要将标题标记为已解决。只需单击复选标记来标记您选择的答案,就知道此问题已“解决”。此外,您似乎混合了您的词汇表。如果某个内容被称为“数字”,则表示该内容可以有两种状态:打开或关闭。单词“数字”(如数字中的数字或手上的数字(手指))和“数字”的含义不同。使用strlen()
,而不是sizeof()
sizeof(tt)
是sizeof(char*)
,可能是4或8(取决于您的平台)。sizeof(tt)
指针的大小(到char)。您正在超越第一个数组。不需要将标题标记为已解决。只需单击复选标记来标记您选择的答案,就知道此问题已“解决”。此外,您似乎混合了您的词汇。如果某个内容被称为“数字”,则意味着该内容可以有两种状态之一:打开或关闭。单词““数字”(如数字中的数字,或手(手指)上的数字)和“数字”的含义不同。