首页 > 解决方案 > 在 Linux 上的 C 程序中屏蔽密码字符

问题描述

我正在尝试创建一个程序来隐藏输入密码时输入的字符。但是我还是有一个问题,一启动程序,'*'字符就不断写到一个分段错误。这是我写的代码和程序执行后的行为:

#include <stdio.h>
#include <curses.h>

#define ENTER 13
#define TAB 9

char pwd[100];

int main(){
    int i = 0;
    char ch;

    printf("Enter your password. Hit ENTER to confirm.\n");
    printf("Password:");

    while(getch() != ENTER){
        ch = getch();
        pwd[i++] = ch;
        printf("* \b");
    }
    if(ch == ENTER || ch == TAB){
        pwd[i] = '\0';
    }

    printf("\n\nPassword:%s\nLength:%d\n\n", pwd, i);
    return 0;
}

在此处输入图像描述

标签: clinuxncursesstdio

解决方案


您应该initscr();在开始使用任何 ncurses 方法之前调用。所以,尝试这样做:

int main(){
    int i = 0;
    char ch;

    initscr();
    // ...

更多信息


推荐阅读