如何在没有getch()的情况下执行密码提示操作(在我们输入的每个字符中立即显示*)使用linux中的系统调用?

时间:2013-09-17 09:23:37

标签: c linux

我正在为'密码提示'编写C代码。我需要为用户输入的每个字符显示*。但我不支持getch()。所以,我尝试了系统调用。

for(i=0;i<5;i++)
{
    system("stty -echo");
    scanf("%c", &a[i]);
    system("stty echo");
    printf("*");
}

我试图关闭echo并获取一个char并显示*启用echo。但我们知道scanf一直持续到\ n。所以,我无法立刻显示*得到一个字符。有人帮我。另外请建议我任何其他更好的方式。

1 个答案:

答案 0 :(得分:0)

输入一个没有回声的密码相对容易,但是一次显示一个字符的星号不是(在支持退格时执行 - 或者更糟的是,箭头键 - 更难)。

第一步是“将终端设置为RAW模式”以禁用“等待整行”行为。