我一直在努力解决如何使用scanf()
的问题,它似乎与整数配合使用得很好,这相对简单:scanf("%d", &i)
。
我的问题在于使用循环读取输入时,使用scanf()
会遇到问题。例如:
do {
printf("counter: %d: ", counter);
scanf("%c %c%d", &command, &prefix, &input);
} while (command != 'q');
当我输入一个有效结构的输入,例如
c P101
,它似乎会在提示之前再次循环。即使只有单个输入也会发生这种情况:
scanf("%c", &c)
在一个 while 循环中。它会在提示我之前执行两次循环。是什么让它循环两次,我该如何停止它?
当我输入的内容比程序预期的字符或数字少时,例如 q
,按下回车似乎会提示我再输入更多内容。如何让 scanf()
处理单个和双字符输入?
scanf()
返回值以确保您得到了预期结果的内容。除非您知道早期的问题,否则这可能会成为此问题的规范问答,但规范答案应涵盖所有合理的观点,我认为从scanf()
返回是一个合理的观点。在完成后向我发出评论;然后我将删除此评论并标记您的评论以进行删除(或者您可以将其标记为过时,但我想知道您已经进行了更改)。谢谢。 - Jonathan Leffler