c - C 中使用 scanf() 分配多个变量时空格字符的作用

标签 c input output scanf

这是我的 C 代码

   #include "stdio.h"

int main()
{
  int minx, x;

  printf("Enter two ints: ");
  scanf( "%d%d", &minx, &x);

   printf("You wrote: %d %d", minx, x);
}

当我的输入为 13 时,我预计输出为 1 3。 这不是 scanf 的工作原理吗,在 %d%d 中,它应该期望 2 位不带空格的数字,这是我用 13 给出的,所以期望将 minx 设为 1 并将 x 设为 3,但它不起作用。当我将输入从 13 更改为 1 3 时,它会输出 1 3。但是 scanf 是 %d%d 格式,而不是 %d %d 格式,那么为什么它在这里接受空格字符呢?当输入为 1 3 时,我期望输出为 1,而不是 1 3。空格字符在这里起什么作用,它实际上有什么作用?

最佳答案

当您使用 scanf%d 格式输入数字时,它会读取任意位数的整数 。当您有连续的 %d%d 时,它将读取两个任意位数的整数。这正是您所看到的。

如果您只想读取每个整数的单个数字,则必须指定1作为输入(字段)宽度!这将执行您想要的操作:

scanf("%1d%1d", &minx, &x);

关于c - C 中使用 scanf() 分配多个变量时空格字符的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58400771/

相关文章:

java - 如何用java读取command.com的输出

Python 控制台应用程序 - 在输入行上方输出

JAVA - 答案不是根据输出计算的?

c - 如何组合两个数组并输出描述中所写的存储值。可能有一些方法可以做到这一点?

objective-c - Swift:使用 strftime 和本地时间格式化 NSDate

javascript - 更改文本框输入的背景颜色在为空时不起作用

javascript - 查找在javascript中按下的键的Unicode

c - 两个不同的 for 循环之间的 Printf 不起作用

c++ - 定义一个指针来引用相同的变量名引用?

c - fscanf 转结构体数组