如何使用isdisit()作为字符数组(字符串)?

时间:2017-10-17 08:14:39

标签: c

我正在使用C来开发我的迷你项目。因此,当我将它用于char(比如char a)并使用scanf("%c",&a);获取输入时,这里的isdigit()工作正常。但是当我将它用于字符串时它会失败 (比如char a [5])并用scanf("%s",a);得到它。 我希望如果我将输入设为55 isdigit(),它应该评估为true,而不是当我将输入视为“Wd”时。

1 个答案:

答案 0 :(得分:1)

isdigit()只能接收一个字符作为参数。 它无法理解字符数组。

如果char a[5]位于内存中的0x38383838,isdigit(a);虚拟为isdigit(0x38383838);
所以它会返回0(或错误)。

如果你想测试一个字符数组是否是数字,那么你应该

int isdigit_array(char *a){
  int num = strlen(a);
  if(num == 0) return 0;

  int flag_isdigit = 1;
  int i;
  for(i=0; i<num; i++){
    flag_isdigit = flag_isdigit && isdigit(a[i]);
  }
  return flag_isdigit;
}