c语言密码输入,屏幕回显*并按回车显示输入密码
展开全部
//getch()函数:从控制台无回显地取一个字符,返回从键盘上读取到的字符
//可以参考 http://baike.baidu.com/view/751663.htm
#include <stdio.h>
#include <conio.h>
void main()
{
char ch,str[100];
int i=0;
while((ch=getch()) != '\r') //按下的字符赋值给ch,当按下回车退出
{
putchar('*'); //每按下一个字符输出一个*
str[i++] = ch; //把字符存入数组
}
str[i] = '\0'; //数组的末端加上字符串结束标志
printf(
参考资料: http://baike.baidu.com/view/751663.htm
展开全部
#include <stdio.h>
#include<conio.h> // getch()函数头文件
#define PASSWDMAX 50 // 最大可输入与回显50个字符的密码
int main()
{
char passwd[50] = {0};
printf("请输入密码:\n");
int i = 0;
for (i = 0; i < PASSWDMAX; i++)
{
// getch为不回显输入函数,注意头文件,以及库是否存在
if((passwd[i] = getch()) != '\n')
{
printf("*");
}
else
{
for(; i >= 0; i--)
printf("%c", '\b'); // 退格,删掉*字符
printf("%s\n", passwd); // 显示密码
}
}
if (i >= PASSWDMAX)
{
printf("输入密码长度不符!\n");
}
return 0;
}
手边没有编译器,所以没有验证,有问题请回复。
=================================================================================
早上验证时发现我的计算机没有这个库,所以可能需要自己实现getch(),在linux环境下可以调用
tcgetattr()、tcsetattr()函数来实现在输入时不显示字符即可。
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
#define PASSWDMAX 50 // 最大可输入与回显50个字符的密码
int getch(void)
{
int c=0;
struct termios org_opts, new_opts;
int res=0;
//----- store old settings -----------
res=tcgetattr(STDIN_FILENO, &org_opts);
assert(res==0);
//---- set new terminal parms --------
memcpy(&new_opts, &org_opts, sizeof(new_opts));
new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);
tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
c=getchar();
//------ restore old settings ---------
res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);assert(res==0);
return c;
}
int main()
{
char passwd[50] = {0};
printf("请输入密码:\n");
int i = 0;
for (i = 0; i < PASSWDMAX; i++)
{
if((passwd[i] = getch()) != '\n')
{
printf("*");
}
else
{
for(; i >= 0; i--)
printf("%c", '\b'); // 退格,删掉*字符
printf("%s\n", passwd); // 显示密码
break;
}
}
if (i >= PASSWDMAX)
{
printf("输入密码长度不符!\n");
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先你要注意这个小程序的重点是什么:
1。确定对方输入的字符数目。你需要scanf
2。保存输入字符的位置,以及大小。
如果即时需要显示星号,也去putchar(),getchar()比较println()好用
3。程序的完整性,可进入性
这里面你不仅需要for循环,DO循环,switch语句不可少
说了这么多,希望能够授之以渔
祝你学习愉快!
1。确定对方输入的字符数目。你需要scanf
2。保存输入字符的位置,以及大小。
如果即时需要显示星号,也去putchar(),getchar()比较println()好用
3。程序的完整性,可进入性
这里面你不仅需要for循环,DO循环,switch语句不可少
说了这么多,希望能够授之以渔
祝你学习愉快!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用getch()函数,改函数获取字符时不输出到屏幕,在获取到字符后可以使用printf("*")输出星号,如
while(ch=getch()){
printf("*");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询