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

Language: C; Single scanf() for 1 or 2 inputs

需要什么:

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

*或任何其他 function/way 可以做必要的事情。

输入类型:

  1. %c %i - 示例:c 56
  2. %c - 示例:c

当前问题:

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

可能的输入示例:

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

}