我想了解如何验证字符串输入并检查输入的字符串是否为数字?我相信isdigit()函数是正确的方法,但是我可以用一个字符尝试一下,但是当涉及到字符串时,该函数对我没有帮助。这就是我到目前为止所能做到的任何请指导我验证完整的字符串,如
char * Var1 =“ 12345”和char * var2 =“ abcd”
#include <stdio.h>
#include <ctype.h>
int main()
{
char *var1 = "hello";
char *var2 = "12345";
if( isdigit(var1) )
{
printf("var1 = |%s| is a digit\n", var1 );
}
else
{
printf("var1 = |%s| is not a digit\n", var1 );
}
if( isdigit(var2) )
{
printf("var2 = |%s| is a digit\n", var2 );
}
else
{
printf("var2 = |%s| is not a digit\n", var2 );
}
return(0);
}
如下声明和初始化变量时,程序似乎运行良好,
int var1 ='h'; int var2 ='2';
但我想了解如何验证* var =“ 12345”之类的完整字符串;
用这个
int isNumber(const char *const text)
{
char *endptr;
if (text == NULL)
return 0;
strtol(text, &endptr, 10);
return (*endptr == '\0');
}
然后
if (isNumeric(var1) == 0)
printf("%s is NOT a number\n", var1);
else
printf("%s is number\n", var1);
该strtol()
功能将忽略前导的whitspace字符。
如果找到了无法转换的字符,转换将停止,并endptr
在返回后指向该字符,因此检查*endptr == '\0'
将告诉您是否在字符串的末尾,这意味着所有字符都已成功转换。
如果您也想将前导空格也视为无效字符,则可以直接写成空白
int isNumber(const char *text)
{
char *endptr;
if (text == NULL)
return 0;
while ((*text != '\0') && (isspace(*text) != 0))
text++;
if (*text == '\0')
return 0;
strtol(text, &endptr, 10);
return (*endptr == '\0');
}
根据您的需要,但是跳过前导空白字符是将数字解释为好像人们正在阅读它们一样,因为人们“看不到”空白字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句