gpt4 book ai didi

c - scanf inside while循环只工作一次

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:09 24 4
gpt4 key购买 nike

所以我有这段代码,它应该从用户那里获取坐标:

#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

我真的很困惑,因为这是简单的代码,而且我完全不知道是什么原因造成的。有人吗?(如果有什么不同,我的系统是山狮)

最佳答案

一种可能的解决方案是添加一个空格来跳过空格:

scanf(" %c",&letter);
^

正如用户“未定义行为”正确指出的那样,您还应该检查返回值。在这种情况下,如果返回值 <0,您希望返回值等于您正在阅读的项目数。那么你就不能从stdin读取如果返回值小于您正在阅读的项目数,则表示您有转换错误。

关于c - scanf inside while循环只工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16447759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com