如何防止'\n'被传递为输入?

问题描述 投票:0回答:1

当我们执行下面的代码时。

#include <stdio.h>

int main(void){
    char x,y;
    scanf("%c", &y);
    x = getchar();
    putchar(x);
    return 0;
}

正在输入的回车键 scanf("%c", &y); 有什么办法可以避免这种情况的发生吗?我现在知道,如果我们使用 scanf 那么我们就可以忽略 \nscanf("%*c%c", &x); 但不知道该怎么做,而使用 getchar().

c pointers io user-input getchar
1个回答
0
投票

你可以做这样的事情

#include <stdio.h>

int main(void)
{
    char x,y,ch;

    scanf("%c%*c", &y);
    while((ch=getchar())!='\n'&&ch!=EOF); //removes all character in input buffer
    x = getchar();
    putchar(x);
    return 0;
}

0
投票

基本上是输入缓冲区的问题,在你的情况下,你可以使用另一种输入字符串getchar()与fflush(stdin);来处理这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.