可以提供两种输入:
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语言的初学者,我很难弄清楚如何实现这一目标。
答案 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);
}