如何检查从键盘输入的数字在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(

有谁能帮我检查一下从键盘输入的数字在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(*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
表示单个字符,则是正确的。。如果您检查的是单个字符..对于大多数用例来说都是正确的,但是您可能需要注意这一点。例如,见。测试方式完全取决于您想要对结果做什么。对于大多数用例都是正确的,但您可能需要小心处理。例如,见。测试的方式取决于您想要对结果做什么。