【发布时间】:2013-05-03 02:26:19
【问题描述】:
所以我有这段代码,它应该从用户那里获取坐标:
#include <stdio.h>
#include <time.h>
int main() {
int number;
char letter;
int points = 3;
while(points < 8){
printf("give me first coordinate (letter)");
scanf("%c",&letter);
printf("give me second coordinate (number)");
scanf("%d",&number);
}
}
据我所知,这应该继续从用户那里获取坐标,但它只获取一次,然后以一种非常奇怪的方式粉碎,就像它无缘无故地跳过 scanf 一样。这是我的输出:
give me first coordinate (letter)a
give me second coordinate (number)1
give me first coordinate (letter)give me second coordinate (number)12
give me first coordinate (letter)give me second coordinate (number)df
give me first coordinate (letter)give me second coordinate (number)give me first coordinate (letter)give me second coordinate (number)sss
我感到很困惑,因为这是简单的代码,我不知道是什么原因造成的。有人吗?(如果有什么不同,我的系统是山狮)
【问题讨论】:
-
想想你是如何处理输入中出现的换行符的。提示:你现在根本没有处理它们。
-
您忽略了输入操作的结果。这是一个致命的编程错误。
-
@KubaPolaczek 错误是人人都会犯的……但是你以后如何避免犯这个错误呢?在我看来,这个问题主要是关于
scanf。我会从仔细阅读scanf手册开始,一遍又一遍,直到我完全理解为止……为了将来参考,opengroup 对 C 标准库函数进行了很好的描述。您可以通过谷歌搜索“opengroup scanf”找到 opengroup scanf 手册。
标签: c while-loop scanf