区分字母输入和c中的整数输入

时间:2015-09-24 04:45:52

标签: c

可以提供两种输入:

50
b 2 40

我必须区分这两种情况,然后相应地采取进一步行动。这是我尝试过的:

char input[100];
fgets(input, 100, stdin);
printf("%s", input);
int count = 0;
char a[3][100];
int j=0, i=0;
while(true){

  a[count][j] = input[i];
  j++; i++;

  if(input[i] == '\n'){
    break;
  }
  if(input[i] == ' '){
    count++;
    j = 0;
    i++;
  }
}
printf("%d\n", count);
printf("%s\n", a[0]);
printf("%s\n", a[1]);
printf("%s\n", a[2]);

例如,输入:

b 6767 9090

输出:

b 6767 9090
b 6767 9090
2
b����
67670
9090

有人可以帮我解决这个问题吗?之前我曾建议使用fgets。由于我是C语言的初学者,我很难弄清楚如何实现这一目标。

3 个答案:

答案 0 :(得分:1)

您应该在遇到空格时设置'\0'或null终止符,或者您可以预先将数组的所有元素设置为0或null,如下所示 -

char a[3][100] = {0};

答案 1 :(得分:1)

此外,如果用户输入的字符串超过三个字(即..,count> 2),则该程序将崩溃,因为循环while(true)尝试直到达到\ n字符。

答案 2 :(得分:0)

我发现最好的方法是:

char inp[25];
scanf("%s", inp);
if(inp[0] == 'b'){
  int r, v;
  scanf("%d %d", &r, &v);
}
else{
  int v = atoi(inp);
}