C:认为参数是int参数

sf_*_*anb 0 c function

在我的程序中,我需要验证传递给程序的参数是一个整数,所以我创建了这个小函数来处理用户键入"1st"而不是"1"的情况.

问题是它根本不起作用.我试着调试和所有我可以告诉你的是,参数为12,长为2(12是我要测试的值,2是传递给函数的数数)

 int intOnly(char *toCheck, int longeur) {
 int i = 0; 
 while (i < longeur) {
  switch (toCheck[i]) {
   case 0:
   case 1:
   case 2:
   case 3:
   case 4:
   case 5:
   case 6:
   case 7:
   case 8:
   case 9:
   case ' ': 
    i++;
   default:
    return 0;
    break;
  }
  return 1;
 }
}
Run Code Online (Sandbox Code Playgroud)

我希望一切都清楚,谢谢你的帮助;)

Jam*_*lis 11

如果要检查一个字符的十位数字之一,你需要使用的字符常量'0','1'等(没有整型常量,0,1,等).


Jer*_*fin 8

一旦你已经修复了已经被指出的问题,你应该查找isdigitisspace用它们来更清晰地写函数.另一种可能性是使用类似的东西strcspn或者strpbrk在一个步骤中进行搜索.


Pee*_*ger 5

只是使用strtol它将转换整数,你可以从第三个参数告诉它是否成功.

有关描述,请参阅strtol(3)