带有消息的 scanf 给出了与没有它时不同的问题

scanf with a message gives a different question than without it

scanf("Enter: %d",&a); 

为什么存储的数字与输入值不同?

scanf("%d",&a)

存储与前者不同的值。 当输入数字 12 时,第一个语句存储数字 32764,下一个存储 12

函数scanf()只是尝试接受程序员给定的格式,并尝试将它们赋值到下一个参数给定的变量中。像 printf() 打印一些东西然后询问用户的输入对你来说是行不通的。

语法:

scanf("Enter: %d", &a);

不会出现类似:

Enter: // and wait...

它将等待输入 Enter: 以读取 a

int a;
scanf("Enter: %d", &a);
printf("%d\n", a);

您必须输入(区分大小写):

Enter:120

120分配给a

匹配给定的格式,否则,它将 return 0 而不是 1 (成功分配的变量总数)。

要实现您实际想要的效果,请使用printf()puts()显示输入的文本:

puts("Enter: ");
scanf("%d", &a);

如果你使用

scanf("Enter: %d",&a);

对于这种情况,您应该在 %d 之前输入任何内容:"Enter: ",然后输入数字。

scanf() 跳过 "Enter: ",然后接受号码。