如何防止在fgets中回显一些char

时间:2013-03-06 02:30:03

标签: c shell echo fgets

我正在使用fgets来读取用户输入。但如果我按下" Ctrl + C",我将在终端上获得^ C字符。如果有办法阻止这种回声,我会徘徊吗?

2 个答案:

答案 0 :(得分:1)

如果您缺少的是阻止^ C显示在屏幕上,请使用curses禁用echo:

#include <ncurses.h>                                                              
#include <stdlib.h>                                                               

void main() {                                                                     
    char buf[90];                                                                 
    initscr();                                                                    
    noecho();                                                                     
    fgets(buf, 80, stdin);                                                        
}                           

答案 1 :(得分:0)

CTRL-C用于中止当前任务并重新获得用户控制权。这是一个特殊的序列,它使操作系统向活动程序发送信号。

CTRL-C信号的默认操作是终止活动程序,无论它是否正在执行fgets()。   覆盖它的一种方法是在你的程序中编写自己的信号处理程序并忽略CTRL-C,我怀疑这对你的目的是否有任何好处。