gpt4 book ai didi

c - scanf 之后的 getchar (读取整数)将 scanf 的终止 "enter"键作为字符

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

当我有一个 scanf 后跟一个 getchar 时,为什么 getchar 总是不断获取 scanf 的最后一个定界字符?我怎样才能阻止呢?我尝试研究 scanf 的“格式说明符”,阅读了很多内容,但没有解决这个问题。

代码如下所示 -

#include <stdio.h>
#include <conio.h>

int main()
{
int a;
char b;

printf ("Enter an integer \n");
scanf_s(" %d", &a);

printf("Enter a character \n");
b = getchar();

printf("The integer you entered is %d \n", a);
printf("The character you entered is %c \n", b);

_getch();
return 0;
}

输出如下 -输入一个整数4563输入一个字符您输入的整数是4563您输入的字符是

我在整数输入结束时按下的回车键由 getchar 返回。打印“输入字符”后屏幕甚至没有停止。执行此操作的正确方法是什么?

最佳答案

使用 scanf("%c", &b) 代替 getchar()

当您在 %c 前面放置空格时,您将清理缓冲区

或者你也可以使用它来清理缓冲区:

int ch;
while ((ch = getchar()) != '\n' && ch != EOF);

完整示例:

int main(void)
{
printf("Enter an integer \n");
int a;
scanf(" %d", &a);
int ch;
while ((ch = getchar()) != '\n' && ch != EOF) {
}

printf("Enter a character \n");
char b = getchar();

printf("The integer you entered is %d \n", a);
printf("The character you entered is %c \n", b);

_getch();
}

但我认为 scanf()

关于c - scanf 之后的 getchar (读取整数)将 scanf 的终止 "enter"键作为字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51977208/

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