gpt4 book ai didi

c - 从控制台中删除新行字符

转载 作者:行者123 更新时间:2023-11-30 19:39:28 26 4
gpt4 key购买 nike

我有这个循环,但是当我在角色后面按回车键时,它会处理它,然后在再次要求输入之前处理“\n”。请!!!!帮助

int input;



while (true){
input = getchar();
fflush(NULL);
input = input - '0';
if( input != 'e' && input != '\n') {
rc = state_fun(input);
}

5[ENTER] 处理 5 作为输入,然后处理 10(即 ascii '\n')作为输入,然后再次请求输入。这让我发疯

最佳答案

您可以关闭控制台的回显功能,只回显非'\n'的字符。如果您使用linux,则可以使用以下代码:

#include <termios.h>
#include <stdio.h>
#include <unistd.h>
int main(){
struct termios old, new;
int nread;

/* Turn echoing off and fail if we can't. */
if (tcgetattr (STDIN_FILENO, &old) != 0)
return -1;
new = old;
new.c_lflag &= ~(ECHO|ICANON);
if (tcsetattr (STDIN_FILENO, TCSAFLUSH, &new) != 0)
return -1;

char input;
while (1)
{
input = getchar();
if (input!='\n')
putchar(input);
}

/* Restore terminal. */
tcsetattr (STDIN_FILENO, TCSAFLUSH, &old);
}

引用Hide password input on terminal .

关于c - 从控制台中删除新行字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512699/

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