我正在尝试编写一个基于键盘输入进行计算的程序,例如 a b c,a 是数字 1,b 是数字 2,c 是运算符,但它不允许我在使用字符串时分配 b,它不显示 c当我使用 char 时,有人可以解释一下这是如何工作的,以及如何输入多种数据类型吗?我是 C 新手,我尝试过 C++,然后才更容易输入它们
#include <stdio.h>
int main() {
int a , b;
char c[1];
scanf("%i%i%s", &a, &b, &c); //type 2 3 +
printf("%i %i %s",a,b,c);
}
输出为 2 0 +
当我尝试使用 char 时
#包括
int main() {
int a , b;
char c;
scanf("%i%i%c", &a, &b, &c);
printf("%i %i %c",a,b,c);
}
输出是 2 3 它没有显示 c 也没有识别它
char [2]
需要保存一个包含一个字符和终止符 ' ' 的字符串。
使用
scanf()
读取字符串时始终使用最大字段宽度。
格式字符串
%s
需要匹配的char *
,您只需将其写为c
。
成功时
scanf()
返回成功匹配的项目数。如果您不检查这一点,您可能正在对未初始化的变量进行操作。
#include <stdio.h>
int main(void) {
int a;
int b;
char c[2];
if(scanf("%i%i%1s", &a, &b, c) != 3) {
printf("scanf failed\n");
return 1;
};
printf("%i %i %s",a, b, c);
}
如果只输入两个数字,
scanf()
将会等待接线员。如果您不希望使用 fgets()
或 getline()
,则使用 sscanf()
来处理输入行。
运行示例:
$ ./a.out
1 x
scanf failed
$ ./a.out
1 2 +
1 2 +