Linux终端下输入密码显示星号
2014-08-22 22:07
1071 查看
Linux终端下输入密码显示星号
passwd.h
#ifndef _PASSWD_H
#define _PASSWD_H
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
char getch()
{
int c = 0;
int res = 0;
struct termios org_opts, new_opts;
res = tcgetattr(STDIN_FILENO, &org_opts);
assert(res == 0);
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();
res = tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);
assert(res == 0);
return c;
}
void passwd()
{
FILE *fp;
char input[] = {0};
int j,n;
char passwd[]="123";
system("reset");
if((fp = fopen("passwd.txt","w")) == NULL)
{
printf("open passwd file error\n");
exit(0);
}
if(fwrite(passwd,sizeof(passwd),1,fp) != 1)
{
printf("write file error!\n");
exit(0);
}
fscanf(fp,"%s",passwd);
n = strlen(passwd);
printf("\n\n\n\n\n\t\t*********welcome to use my system********\n");
printf("\n\t\t\tPlease enter password:");
while(1 != j)
{
int i = 0;
fflush(stdin);
input[0] = getch();
while(input[i] != '\n' && i < n)
{
printf("*");
i++;
input[i] = getch();
}
if(strncmp(passwd,input,n) == 0)
{
printf("\n\t\t\t\tOK!\n");
j = 1;
}
else
{
printf("\n\t\t\tSorry,try again!\n");
printf("\t\t\t");
}
}
getch();
}
#endif
test.c
#include <stdio.h>
#include "passwd.h"
int main()
{
passwd();
return 0;
}
passwd.h
#ifndef _PASSWD_H
#define _PASSWD_H
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
char getch()
{
int c = 0;
int res = 0;
struct termios org_opts, new_opts;
res = tcgetattr(STDIN_FILENO, &org_opts);
assert(res == 0);
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();
res = tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);
assert(res == 0);
return c;
}
void passwd()
{
FILE *fp;
char input[] = {0};
int j,n;
char passwd[]="123";
system("reset");
if((fp = fopen("passwd.txt","w")) == NULL)
{
printf("open passwd file error\n");
exit(0);
}
if(fwrite(passwd,sizeof(passwd),1,fp) != 1)
{
printf("write file error!\n");
exit(0);
}
fscanf(fp,"%s",passwd);
n = strlen(passwd);
printf("\n\n\n\n\n\t\t*********welcome to use my system********\n");
printf("\n\t\t\tPlease enter password:");
while(1 != j)
{
int i = 0;
fflush(stdin);
input[0] = getch();
while(input[i] != '\n' && i < n)
{
printf("*");
i++;
input[i] = getch();
}
if(strncmp(passwd,input,n) == 0)
{
printf("\n\t\t\t\tOK!\n");
j = 1;
}
else
{
printf("\n\t\t\tSorry,try again!\n");
printf("\t\t\t");
}
}
getch();
}
#endif
test.c
#include <stdio.h>
#include "passwd.h"
int main()
{
passwd();
return 0;
}
相关文章推荐
- 如何在终端输入密码时显示星号 | Linux 中国
- linux在终端输入密码时显示星号的实现方法
- 让你在终端输入密码时显示星号
- 如何在终端输入密码时显示星号
- 如何在终端输入密码时显示星号
- 让你在终端输入密码时显示星号
- Linux下实现输入密码以星号显示
- C++中在输入密码的时候显示星号的方法
- C语言实现密码输入显示星号 VS2010 亲测通过
- C语言模拟密码输入(显示星号)
- C语言实现 输入密码显示星号******
- GNU Linux shell时不进行回显(输入密码时不显示的需求)
- Linux下C语言键盘输入密码时无回显(屏幕不显示字符)
- Linux下C语言键盘输入密码时无回显(屏幕不显示字符)
- C#实现在控制台输入密码显示星号的方法
- qt QlineEdit 输入密码显示成星号
- linux密码输入显示*
- VC6.0输入密码显示星号 亲测通过
- linux python终端方向键输入显示乱码 解决方法
- Linux下自动修改用户密码的方法(直接通过命令而不是在终端输入密码)