【发布时间】:2017-05-19 20:58:47
【问题描述】:
我试图创建一些用户必须提供某些数字的东西,最后程序会打印所有数字,中间有一个空格。
一切正常,除了最后一个printf()。我已经尝试像以前的scanf() 一样进出fflush,但没有任何效果。
有什么建议吗?代码如下:
printf("Give a round number:\n");
fflush(stdout);
scanf("%d", &roundNumber);
fflush(stdin);
printf("Give a decimal number:\n");
fflush(stdout);
scanf("%lf", &decimalNumber);
fflush(stdin);
printf("Give 2 round numbers separated by a ',' :\n");
fflush(stdout);
scanf("%d,%d",firstRoundNumber,secondRoundNumber);
fflush(stdin);
printf("Your numbers: %d %lf %d %d\n", roundNumber, decimalNumber, firstRoundNumber, secondRoundNumber);
【问题讨论】:
-
scanf("%d,%d",&firstRoundNumber,&secondRoundNumber);
-
scanf("%d,%d",firstRoundNumber,secondRoundNumber); -> scanf("%d,%d",&firstRoundNumber,&secondRoundNumber); -
另外,'fflush(stdin);'是 UB。
-
另外,调试失败 - 单步执行会表明 printf() 甚至没有到达。
-
这里是 C11 标准的便捷链接,引用为 what is the use of fflush(stdin) in c programming。此外,如果您只是在 backticks(例如
`stuff`)中将内联代码包含在 cmets 中,它将被偏移为固定宽度。