c - 在 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;
}
解决方案
您应该initscr();
在开始使用任何 ncurses 方法之前调用。所以,尝试这样做:
int main(){
int i = 0;
char ch;
initscr();
// ...
更多信息。
推荐阅读
- javascript - 为什么我的网络应用程序不会将数据发送到我的 google firebase 数据库?
- java - 如何在运行时显示多个图像(换行到下一行)
- macos - 为什么这个访问父目录的代码在 Matlab 中不起作用?
- r - 如何在不删除行中的其余数据的情况下获得相交的行名
- javascript - 如何使函数更改先前分配的变量的值
- python - 如何创建“列表”类的子类,在实例化时对其进行排序?
- unity3d - 在播放模式下省略所有 Debug.Asserts
- ios - 使用verticalAlighment和alignmentGuide对齐视图的底部对齐
- reactjs - 我无法在按钮单击时删除 CRUD 应用程序中的组件
- excel - 需要一个工作表公式来检测单元格中的分隔符是否应该被忽略