格式字符串scanf()中的空格

#include int main() { int a,b; printf("Enter values of a and b\n"); scanf(" %d%d ",&a,&b); printf("a=%db=%d", a, b); return 0 ; } 

这里如果我使用scanf(),就像在我的代码中那么编译器期望用户输入三个值,我无法理解这一点,当我使用scanf()而没有任何空格时,它只按要求请求两个输入,所以我很困惑这两者之间的区别,PLZ解释……

如果在数字后面给出一个空格, scanf必须确定要匹配的空格的结尾:

 scanf("%d ", &a); 

这里的空间意味着读取并丢弃所有空格 。 必须为scanf显示非空白字符(或EOF),以便清楚所有内容,以便正确读取和丢弃它们。

考虑这个输入流(点是字符指示符):

  1 2 ........ 

如果你调用scanf("%d") ,那么在调用之后,剩下的流是

  2 .... 

在下次读取时将丢弃空格。 请注意,读取数字时会自动丢弃前导空格。

如果你改为调用scanf("%d ") ,剩下的流是

 2 . 

你看到空格立即消失了。

看看这个 。

您可以在%d之间使用空格。 这将要求用户输入类似于: 12 32 (带空格)的内容。

如果你不想这样,你应该使用一个带有scanf的循环。

祝好运。