gpt4 book ai didi

c - scanf 跳过扫描字符

转载 作者:行者123 更新时间:2023-11-30 16:57:30 25 4
gpt4 key购买 nike

我的问题是字符的 scanf 被跳过,并且它不会检查扫描字符以查看我是否想再次重复该程序,那么为什么会发生这种情况?

#include <stdio.h>
#include <stdlib.h>

int main()
{

int number,check;
char rep;

printf("Program to check if number is even or odd");

while( (rep!='N') || (rep!='n') )
{
printf("\n\nPlease enter the number: ");
scanf("%d",&number);

check = number%2;

if(check != 0)
printf("\nNumber is odd.");
else
printf("\nNumber is even.");
printf("\n");

printf("Do you want to enter number again?\nY=yes\tN=no\n");
scanf("%c", &rep);
}


return 0;
}

最佳答案

scanf("%c", &rep); 更改为 scanf("%c", &rep);

这是因为第一次输入数字时,stdin 中留下了“\n”。执行 scanf("%c", &rep); 时,'\n' 立即被 scanf() 消耗并分配给 rep 。由于 '\n' 既不等于 'N' 也不等于 'n',因此该循环将继续。

如果格式字符串中有前导空格,则在读取开始之前所有空白字符都会被丢弃。在您的情况下,不可见的“\n”将被忽略,以便您可以输入字符。

此外,如果 rep 的原始值恰好是“n”或“N”,您应该改为编写 char rep = 0;

关于c - scanf 跳过扫描字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39471093/

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