我正在尝试这个:
int M,N,K;
printf("Enter (m,k,n) : ");
scanf("%d %d %d ", &M, &K, &N);
printf("\nDone?");
这是在主函数内部。我需要程序读取三个整数,但是当我运行它时,它只读取三个整数,但不会超过 scanf,即“完成?”没有执行,就好像它仍在等待更多输入一样。如果我删除最后一个 %d 之后的空格,它就可以正常工作。但为什么会这样呢?
最佳答案
If I remove the space after the last %d, it works fine. But why is that so?
"%d %d %d "
中的 ""
指示 scanf()
读取而不是保存任意数量的白色- 空格包括'\n'
。
scanf()
不断消耗空格,直到遇到一些非空格。 @user3121023
"%d %d %d "
强制 scanf()
不返回,直到读取到一些非空白之后 3 个数字。
提示:避免 scanf()
。使用fgets()
,然后解析字符串。 @DevSolar
关于c - 为什么 scanf 不能在正式输入末尾使用空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58788629/