语言:C;单次扫描()用于1或2个输入

时间:2017-11-06 15:17:25

标签: c buffer scanf

什么是必要的:

单个scanf()*语句,可以容纳两种类型的输入,并在初始化变量之前将它们分配给它。

*或任何其他可以做必要的功能/方式。

输入类型:

  1. %c %i - 示例:c 56
  2. %c - 示例:c
  3. 当前问题:

    scanf("%c %i", &c, &i); - 必须指定%i,但有些情况下没有第二个参数%i

    可能的输入示例:

    • c 567(同一行)

    • i 21(同一行)

    • ħ

1 个答案:

答案 0 :(得分:3)

您可以使用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 */
 }

}