c语言getch输入密码接收回车的问题

2022-04-13 科技 172阅读
以上代码问题所在:
1.考虑到,回车/n处理后,要表示密码输入结束应该在getch()返回''\n'给a[i]后,将该a[i]的值替换为'\0'。这样输出字符串时,才会正确输出密码。而'\n'仅表示,光标切换到行首。
2.输出密码时,不要直接使用printf循环输出字符(%c),而是应该使用(%s),当然,你也可以使用(%c)时,判断输出'\0'(你上面是'\n')时,换行。
3.对于文件中显示,只是记事本把'\n'解释成某种字符而已。对于特殊含义字符,经常会显示成不常见的符号。不过'\n'还是会解释成换行。但是你上面使用fputs写入字符串,程序无法探测到正常的字符串结束标记'\0',所以你文件中出现乱码很正常,你要是指定a[15]='\0',或许就好了。

下面分享一段我写的控制台下用于输入密码的输入函数。函数返回输入的密码字符串,第一个参数是涌入保存密码的字符串地址,第二个是显示出来看的,比如显示星号*,就传入'*'。

char*StrPassword(char*sz,intMarkStar)
{inti=0;
if(NULL==sz)
return0;
while('\n'!=(sz[i++]=getch()))
{
//printf("%d",sz[i-1]);
if(8==sz[i-1])
{
if(i>1)
{
i-=2;
putch('\b');
putch('');
putch('\b');

}
else
{
i--;
}
continue;
}
elseif(13==sz[i-1])
{
break;
}
else
{
if(0!=MarkStar)
putch(MarkStar);

}
}
sz[i-1]='\0';
putch('\n');
returnsz;
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com