语言:C;单个 scanf() 用于 1 或 2 个输入
Language: C; Single scanf() for 1 or 2 inputs
需要什么:
单个 scanf()* 语句,可以容纳 2 种类型的输入并在初始化之前将它们分配给 variable/s。
*或任何其他 function/way 可以做必要的事情。
输入类型:
%c %i
- 示例:c 56
%c
- 示例:c
当前问题:
scanf("%c %i", &c, &i);
- 必须指定 %i
,但也有没有第二个参数的情况 %i
.
可能的输入示例:
c 567(同行)
i 21(同行)
h
您可以使用 fgets
读取该行,然后使用非交互式的 sscanf
,计算您已成功解析的字段数,然后按照相应的方式操作:
#include <stdio.h>
int main()
{
char buffer[100];
char c;
int i;
fgets(buffer, sizeof(buffer), stdin);
int nb_toks = sscanf(buffer,"%c %i", &c, &i);
switch (nb_toks)
{
case 2:
printf("%c %i\n",c,i);
break;
case 1:
printf("%c\n",c);
break;
default:
/* some error management */
}
}
需要什么:
单个 scanf()* 语句,可以容纳 2 种类型的输入并在初始化之前将它们分配给 variable/s。
*或任何其他 function/way 可以做必要的事情。
输入类型:
%c %i
- 示例:c 56%c
- 示例:c
当前问题:
scanf("%c %i", &c, &i);
- 必须指定 %i
,但也有没有第二个参数的情况 %i
.
可能的输入示例:
c 567(同行)
i 21(同行)
h
您可以使用 fgets
读取该行,然后使用非交互式的 sscanf
,计算您已成功解析的字段数,然后按照相应的方式操作:
#include <stdio.h>
int main()
{
char buffer[100];
char c;
int i;
fgets(buffer, sizeof(buffer), stdin);
int nb_toks = sscanf(buffer,"%c %i", &c, &i);
switch (nb_toks)
{
case 2:
printf("%c %i\n",c,i);
break;
case 1:
printf("%c\n",c);
break;
default:
/* some error management */
}
}