c - 语言 : C; Single scanf() for 1 or 2 inputs

标签 c buffer scanf

需要什么:

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

*或任何其他可以执行必要操作的功能/方式。

输入类型:

  1. %c %i - 示例:c 56
  2. %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 */
 }

}

关于c - 语言 : C; Single scanf() for 1 or 2 inputs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47140145/

相关文章:

c - 在windows上用java程序运行c程序

c - Scanf 在 C 中跳过每隔一个 while 循环

c - scanf 不在 while 循环中等待用户输入

c - Linux 中相互依赖的树外内核可加载模块

c++ - 浮点格式会受到大端和小端的影响吗?

objective-c - 如何初始化 NSData 以存储 MAX_SIZE_BUFFER 字节?

c++ - 我需要可复制的缓冲区,尽可能轻(例如不是零初始化)?

c - 为什么 fgets() 在循环中被跳过?

c - scanf() 格式字符串中的空白

ios - Mach 代码导致 iOS 和 Cocoa 上的内存耗尽