user-0 提问: 诶本小女子，有个超级简单的c语言问题，输入密码时密码显示为****号。

回复:
user: user-1
content: 肯定能实现，

user: user-2
content: // password.c -- 输入密码程序 #include <stdio.h> #include <conio.h>			// 提供 getch() 原型 #include <string.h>			// 提供 strcmp() 原型  #define PLEN		21		// 储存密码的数组长度 #define BACKSPACE	'\b'	// 退格键 #define ENTER		'\r'	// 回车键  // 储存正确密码的数组 const char correct_password[PLEN] = "abc123";  int main(void) { 	char ch; 	char input_password[PLEN] = "";	// 初始化数组为空 	int index; 	int isright = 0;  	/* 	**	当第一次与密码错误时进入循环，当且仅当密码正确时不进入循环 	*/ 	while ( !isright ) 	{ 		index = 0; 		puts("请输入密码（ENTER键确认输入）："); 		while ( (ch = getch()) != ENTER ) 		{ 			/* 			** 当且仅当 input_password 数组不为空时，按下退格键有效 			*/ 			if ( index > 0 && ch == BACKSPACE ) 			{ 				index--; 				input_password[index] = '\0'; 				printf("\b \b");	// 清除上一个输出的 * 			} 			else if (index < (PLEN - 1)) 			{ 				/* 				** 当 input_password 数组未满时，按下非退格键则储存密码 				*/ 				input_password[index] = ch; 				index++; 				putchar('*'); 			} 			input_password[index] = '\0';		 		} 		putchar('\n');  		/* 		** 比较 input_password 与 correct_password 的内容, 		** 内容相同，则输出密码正确；否则，输出密码错误， 		** 并提示重新输入 		*/ 		if ( strcmp( input_password, correct_password ) == 0 ) 		{ 			puts("密码正确！"); 			isright = 1; 		} 		else 			puts("密码错误！请重新输入密码："); 	} 	puts("按任意键退出...");  	getchar(); 	return 0; }

user: user-3
content: 引用 14 楼 zhangchm2018 的回复:[quote=引用 13 楼 kakasi88 的回复:] 楼主的意思是用最简单的c语言知识来搞一下，结果大家就把网上的帖子复制过来，就导致我这种渣渣就看不下了，能不用文件和指针吗？ 楼主一开始用作例子的简单程序有什么不足？[/quote]  不能输错，没法退格。

user: user-4
content: #include <stdio.h> #include <string.h> #include <conio.h> char ch,pass[11]; int i=0; int main() { ch=getch(); while(ch!='\n') {        pass[i]=ch;        printf("*");        i++;        ch=getch(); } if(strcmp(pass,"abc123"==0)printf("\n密码正确！"); else printf("密码错误！"); return 0; }

user: user-2
content: 引用 13 楼 kakasi88 的回复:楼主的意思是用最简单的c语言知识来搞一下，结果大家就把网上的帖子复制过来，就导致我这种渣渣就看不下了，能不用文件和指针吗？ 楼主一开始用作例子的简单程序有什么不足？

user: user-0
content: 楼主的意思是用最简单的c语言知识来搞一下，结果大家就把网上的帖子复制过来，就导致我这种渣渣就看不下了，能不用文件和指针吗？

user: user-5
content: 引用 3 楼 zhao4zhong1 的回复:仅供参考：#include <conio.h> #include <stdio.h> char pw[40]; int i,ch; FILE *f; void main() { 	cprintf("\r\nPassword:"); 	i=0;pw[i]=0; 	while (1) { 		ch=getch(); 		if (ch==13 || i>=39) break; 		switch (ch)	{ 		case 27: 			cprintf("\rPassword: %40s"," "); 			cprintf("\rPassword: "); 			i=0;pw[i]=0; 			break; 		case 8: 			if (i>0) { 				i--; 				pw[i]=0; 				cprintf("\b \b"); 			} 			break; 		default: 			pw[i]=ch; 			i++; 			pw[i]=0; 			cprintf("*"); 			break; 		} 	} 	cprintf("\r\n"); 	f=fopen("password.txt","w"); 	fprintf(f,"%s\n",pw); 	fclose(f); }   才疏学浅，看不懂。

user: user-3
content: #define BACKSPACE 8  void get_password( char buffer[64], int buflen ) {     int i = 0;     char letter = 0;      // 最多可输入31个字符,最后一个留个'\0'     while ( ( i < buflen - 1 ) && ( letter != '\r' ) )     {         letter = getch();          if ( letter == BACKSPACE )         {             if ( i > 0 )             {                 buffer[--i] = 0;                 putchar( BACKSPACE );                 putchar( ' ' );                 putchar( BACKSPACE );             }             else             {                 putchar( 7 );             }         }         else if ( letter != '\r' )         {             buffer[i++] = letter;             putchar( '*' );         }     }      buffer[i] = '\0'; }

user: user-3
content: #define BACKSPACE 8  void get_password( char buffer[64], int buflen ) {     int i = 0;     char letter = 0;      while ( ( i < buflen - 1 ) && ( letter != '\r' ) )     {         letter = getch();          if ( letter == BACKSPACE )         {             if ( i > 0 )             {                 buffer[--i] = 0;                 putchar( BACKSPACE );                 putchar( ' ' );                 putchar( BACKSPACE );             }             else             {                 putchar( 7 );             }         }         else if ( letter != '\r' )         {             buffer[i++] = letter;             putchar( '*' );         }     }      buffer[i] = '\0'; }

user: user-6

user: user-7
content: 引用 3 楼 zhao4zhong1 的回复:仅供参考：#include <conio.h> #include <stdio.h> char pw[40]; int i,ch; FILE *f; void main() { 	cprintf("\r\nPassword:"); 	i=0;pw[i]=0; 	while (1) { 		ch=getch(); 		if (ch==13 || i>=39) break; 		switch (ch)	{ 		case 27: 			cprintf("\rPassword: %40s"," "); 			cprintf("\rPassword: "); 			i=0;pw[i]=0; 			break; 		case 8: 			if (i>0) { 				i--; 				pw[i]=0; 				cprintf("\b \b"); 			} 			break; 		default: 			pw[i]=ch; 			i++; 			pw[i]=0; 			cprintf("*"); 			break; 		} 	} 	cprintf("\r\n"); 	f=fopen("password.txt","w"); 	fprintf(f,"%s\n",pw); 	fclose(f); }  对着ASCII码表才能看懂……

user: user-8
content: linux如果想sudo时显示密码为*,可以改/etc/sudoers配置文件,在env_reset后面加,pwfeedback

user: user-8
content: 定义一个数组,每输入一个字符就将这个字符保存在这个数组里,然后打印一个*号

user: user-9
content: 引用 3 楼 zhao4zhong1 的回复:仅供参考：#include <conio.h> #include <stdio.h> char pw[40]; int i,ch; FILE *f; void main() { 	cprintf("\r\nPassword:"); 	i=0;pw[i]=0; 	while (1) { 		ch=getch(); 		if (ch==13 || i>=39) break; 		switch (ch)	{ 		case 27: 			cprintf("\rPassword: %40s"," "); 			cprintf("\rPassword: "); 			i=0;pw[i]=0; 			break; 		case 8: 			if (i>0) { 				i--; 				pw[i]=0; 				cprintf("\b \b"); 			} 			break; 		default: 			pw[i]=ch; 			i++; 			pw[i]=0; 			cprintf("*"); 			break; 		} 	} 	cprintf("\r\n"); 	f=fopen("password.txt","w"); 	fprintf(f,"%s\n",pw); 	fclose(f); } 赵老师是我见过最吊的，没有之一，赵4是我们的信仰

user: user-10
content: 好像可以用getch。 https://blog.csdn.net/waydrow/article/details/54991860?utm_source=itdadao&utm_medium=referral

user: user-6
content: 仅供参考：#include <conio.h> #include <stdio.h> char pw[40]; int i,ch; FILE *f; void main() { 	cprintf("\r\nPassword:"); 	i=0;pw[i]=0; 	while (1) { 		ch=getch(); 		if (ch==13 || i>=39) break; 		switch (ch)	{ 		case 27: 			cprintf("\rPassword: %40s"," "); 			cprintf("\rPassword: "); 			i=0;pw[i]=0; 			break; 		case 8: 			if (i>0) { 				i--; 				pw[i]=0; 				cprintf("\b \b"); 			} 			break; 		default: 			pw[i]=ch; 			i++; 			pw[i]=0; 			cprintf("*"); 			break; 		} 	} 	cprintf("\r\n"); 	f=fopen("password.txt","w"); 	fprintf(f,"%s\n",pw); 	fclose(f); }

user: user-0
content: 额，答非所问

user: user-11
content: 问题是挺简单的，只不过这个问题跟C语言无关，跟系统有关。