如何检查从键盘输入的数字在c中是否为数字?
有谁能帮我检查一下从键盘输入的数字在c语言中是否是数字 我试过了如何检查从键盘输入的数字在c中是否为数字?,c,C,有谁能帮我检查一下从键盘输入的数字在c语言中是否是数字 我试过了 isdigit 快速谷歌搜索后: 您可以使用ctype.h构建如下功能: int isnumeric(char *str) { while(*str) { if(!isdigit(*str)) return 0; str++; } return 1; } 快速谷歌搜索后: 您可以使用ctype.h构建如下功能: int isnumeric(char *str) { while(
isdigit
快速谷歌搜索后: 您可以使用
ctype.h
构建如下功能:
int isnumeric(char *str)
{
while(*str)
{
if(!isdigit(*str))
return 0;
str++;
}
return 1;
}
快速谷歌搜索后: 您可以使用
ctype.h
构建如下功能:
int isnumeric(char *str)
{
while(*str)
{
if(!isdigit(*str))
return 0;
str++;
}
return 1;
}
你可以用
只需传递与NULL
不同的第二个参数:
如果endptr不为NULL,则strtol()存储第一个
*endptr中的字符无效。如果根本没有数字,strtol()
将nptr的原始值存储在*endptr中(并返回0)。在里面
特别是,如果返回时*nptr不是'\0',但**endptr是'\0',则
整个字符串是有效的
您还可以查看大无符号整数的strtoull
,或者查看十进制数的strtof
、strtod
、strtold
如果要解析非常大的数字,最好的解决方案是逐字符读取,检查值,并在每个步骤将其存储在适当的数据结构中
但请记住,如果您尝试此解决方案,您将不得不使用外部库来处理大数字,或者使用它所涉及的约束重写所需的部分。您可以使用
只需传递与NULL
不同的第二个参数:
如果endptr不为NULL,则strtol()存储第一个
*endptr中的字符无效。如果根本没有数字,strtol()
将nptr的原始值存储在*endptr中(并返回0)。在里面
特别是,如果返回时*nptr不是'\0',但**endptr是'\0',则
整个字符串是有效的
您还可以查看大无符号整数的strtoull
,或者查看十进制数的strtof
、strtod
、strtold
如果要解析非常大的数字,最好的解决方案是逐字符读取,检查值,并在每个步骤将其存储在适当的数据结构中
但请记住,如果您尝试此解决方案,则必须使用外部库来处理大数字,或者使用它涉及的约束重写所需的部分。我认为小数点('.')或其他特定于区域设置的分隔符不会通过该测试。例如,“0.5”将失败(我将严格考虑数字)-“1000”也会失败(它可能或可能不被认为是“数字”)。从键盘输入的数字是int类型而不是char类型。我只是想测试一下<代码> char *<代码>是“代码> int <代码>类型的表示。另外,我也会考虑使用<代码> SCANF,用于整数或小数。@ USE7:从键盘得到的是一系列字符。它不是一个
int
,除非你把它变成一个。这是c,这意味着你住在离金属很近的地方。@user7你应该告诉我们你是如何获得这个输入的,以及为什么isdigit不能为你工作。通常只需执行int c=getchar();如果(c!=EOF&&isdigit(c)){put(“那是一个数字”);}应该可以。我认为小数点('.')或其他特定于语言环境的分隔符不会通过该测试。例如,“0.5”将失败(我将严格考虑数字)-“1000”也会失败(它可能或可能不被认为是“数字”)。从键盘输入的数字是int类型而不是char类型。我只是想测试一下<代码> char *<代码>是“代码> int <代码>类型的表示。另外,我也会考虑使用<代码> SCANF,用于整数或小数。@ USE7:从键盘得到的是一系列字符。它不是一个int
,除非你把它变成一个。这是c,这意味着你住在离金属很近的地方。@user7你应该告诉我们你是如何获得这个输入的,以及为什么isdigit不能为你工作。通常只需执行int c=getchar();如果(c!=EOF&&isdigit(c)){puts(“那是一个数字”);}应该这样做。isdigit(c)
,其中c
表示单个字符,则是正确的。。如果您正在检查单个字符。isdigit(c)
,其中c
表示单个字符,则是正确的。。如果您检查的是单个字符..对于大多数用例来说都是正确的,但是您可能需要注意这一点。例如,见。测试方式完全取决于您想要对结果做什么。对于大多数用例都是正确的,但您可能需要小心处理。例如,见。测试的方式取决于您想要对结果做什么。