我正在尝试:
int M,N,K;
printf("Enter (m,k,n) : ");
scanf("%d %d %d ", &M, &K, &N);
printf("\nDone?");
这在主函数内部。我需要程序读取三个整数,但是运行该程序时,它只会读取三个整数,但不会超出scanf,即“完成?”。没有执行,就好像它还在等待更多输入。如果我在最后一个%d之后删除了空格,则可以正常工作。但是为什么会这样呢?
如果我在最后%d之后删除空格,则可以正常工作。但是为什么会这样呢?
" "
中的["%d %d %d "
指示scanf()
读取但不保存包括'\n'
的任意数量的空白。
scanf()
一直消耗空白,直到遇到一些非空白为止。 @user3121023
[ string"%d %d %d "
强制scanf()
直到返回一些非空白后才返回<3之后的数字。
提示:避免使用scanf()
。使用fgets()
,然后解析