【问题标题】:Is it possible to get two inputs of different datatypes in one scanf() in c?是否可以在 c 中的一个 scanf() 中获得不同数据类型的两个输入?
【发布时间】:2016-07-29 10:36:44
【问题描述】:

我想得到命令作为输入

<char><number><number>

那么是否有可能使用 c 中的一个 scanf() 函数来获取它?

int i,j; 
char c; 
scanf("%c%d%d",&c, &i, &j);

【问题讨论】:

  • scanf("%c%1d%1d", &amp;c, &amp;i, &amp;j);
  • 您的 scanf 将读取 2 以外的 j 值。 @BLUEPIXY 为您提供了编写 scanf 的正确方法。
  • scanf("%c%1d%1d",&amp;c, &amp;i, &amp;j); printf ("C = %c i = %d j = %d\n", c, i, j); 给我# ./chksize.o A12 C = A i = 1 j = 2
  • 大概你的意思是&lt;char&gt;&lt;digit&gt;&lt;digit&gt;,在这种情况下@BLUEPIXY 已经回答了。但是,如果您真的指的是数字而不是数字(其中数字可能是 10,(或 2345,或...),那么您必须将长度说明符调整为 2d 或 4d 或 ?? 假设您知道每个数字中的位数. 如果不是,你如何解释“23456”?是“2”后跟“3456”,还是“23”后跟“456”,还是……等等。

标签: c input scanf


【解决方案1】:

我认为这不会起作用,因为编译器会将其视为一起而不是一个字符和两个整数,而是以这种格式输入,即让编译器了解您可以将整行视为一个字符串,然后解析字符串以提取字符和整数

char a[1000],c; int x,y;
scanf("%s",a);
c = a[0];
x = a[1] - '0';
y = a[2] - '0';

另外,@BLUEPIXY 为您的问题提供了更好的解决方案!

【讨论】:

  • scanf("%s",a);gets(a) 一样安全。
【解决方案2】:

您可以在 1 个 scanf 中获得多个输入,如下所示:

char ch, string[100];
int number;

printf("--char--/--number--/--string--");
scanf(" %c%d %s",&ch,&number,&string[0]); // -> be careful about the whitespaces

printf("%c\n",ch);
printf("%d\n",number);
printf("%s\n",string);

您不需要使用空格或 \n 来输入您的输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2021-12-18
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多