main() { int d,a; printf("Enter the digit :"); scanf("%d",&d); printf("Enter another digit :"); scanf("%d",&a); }
输出:input数字:10input另一个数字:10
main() { int d; char a[10]; printf("Enter the digit :"); scanf("%d ",&d); printf("Enter another digit :"); scanf("%s ",a); }
输出:
Enter the digit : 10 waiting for stdin
任何人都可以解释scanf("%d",&a)
和scanf("%d ",&a)
之间的区别吗? 为什么在scanf
语句中添加一个空格导致它等待stdin?
scanf格式字符串中的空白符与任何空格字符匹配,不仅空格,甚至多次,所以如果按Enter,则它是匹配字符串的一部分。 如果你按Ctl + D它应该工作。
在scanf
有一个空间意味着它会占用一个空间。 因此它等着你进入这个空间。