密码加密!
1.windows 下的编辑器 C语言不显示输入的数 显示(' * ') (输入字符串)
#include <stdio.h>
#include <string.h>
#include <conio.h>
char* mimainput()
{
char pp[100];
int i=0,j=0;
printf("请输入密码:");
while(i<100)
{
pp[i]=getch();//getch()从控制台输入一各字符但是不显示
if(pp[i]=='\b' && i>0) //遇到回车不管
{
continue;
}
if(pp[i]=='\b' && i==0) //如果在最开始就按退格键,就让i=-1
{
i=0;
continue;
}
if(pp[i]=='\r') //如果输入的是回车,就退出输入循环
{
break;
}
i++;
putchar('*');
}
pp[i]='\0';
return pp;
}
int main(){
char w[100];
strcpy(w,mimainput());
printf("密码:");
puts(w);
return 0;
}
Linux 下 vim C语言 输入的数不显示 显示 (' * ') (输入字符串)
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#include<stdlib.h>
#include<time.h>
#include<termio.h> //这个头文件一定要
int getch(void); //不显示函数
int main()
{
char nn[1000];
int i=0;
int j=0;
while(i<100)
{
nn[i]=getch();//getch()从控制台输入一各字符但是不显示
if(nn[i]=='\b' && i>0) //遇到空格不管
{
continue;
}
if(nn[i]=='\b' && i==0) //如果在最开始就按退格键,就让i=-1
{
i=0;
continue;
}
if(nn[i]=='\r') //如果输入的是回车,就退出输入循环
{
break;
}
i++;
putchar('*');
}
nn[i]='\0';
printf("\n");
printf("%s",nn);
//
}
int getch(void)
{
struct termios tm, tm_old;
int fd = 0, ch;
if (tcgetattr(fd, &tm) < 0) {//保存现在的终端设置
return -1;
}
tm_old = tm;
cfmakeraw(&tm);//更改终端设置为原始模式,该模式下所有的输入数据以字节为单位被处理
if (tcsetattr(fd, TCSANOW, &tm) < 0) {//设置上更改之后的设置
return -1;
}
ch = getchar();
if (tcsetattr(fd, TCSANOW, &tm_old) < 0) {//更改设置为最初的样子
return -1;
}
return ch;
}