请求用户输入密码的代码段

  很久之前就开始思索这个密码该怎么弄了, 不过一直在写订票系统的其他模块, 这个模块始终还是没写. 昨天看 primer plus 突然没了思路, 不想看了, 然后就开了本本敲了这个程序, 具体运行下来还是不错的. 本人大二菜鸟一个, 大一基本荒废了, 也就c比其他人还好点, 可是相对于大神, 咳咳...
  虽然知道具体实现起来一定不会这么简单, 为了加密什么的, 但是用于自己写的小程序也够了哈 = =!
  好了, 上代码, 欢迎各位新手一起交流共同进步, 为了两年后的应聘= =为了这份热情.大笑
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#define LEN 7
int main( void )
{
	char ch[LEN];
	int i;
	printf( "input: " );
	for( i=0; ; i++ )
	{
		ch[i] = getch();		
		if( !isprint(ch[i]) )               // if( 32>ch[i] || 126<ch[i] )    不是可打印字符进入循环
		{   
			if( '\b' == ch[i] && 0 != i )
			{ // 非第一个字符的退格键进行操作  
				printf( "\b \b" );
				i -= 2;
			} 
			else if( ('\n'==ch[i] || '\r'==ch[i]) && LEN-1 == i )  
				break; // 第七个字符的回车结束输入  
			else
				i--; // 其他字符无效, 没有响应  
		//	continue;
		}
		else if( LEN-1 != i )
			printf( "*" );  // 为输入的字符遮盖*号 
		else
			i--; // 阻止输入第七个非\n的字符  
	}
	
	printf( "\n密码: %s\n", ch );
	return 0;
}
// end


//printf( "%%" );
// 输出百分号要用两个..这是换义符号...  


/*if( '\b' == ch[i] )
// 判断相等把常量写在左边, 不然到处都是错误  
{
	if( 0 == i )
	{
		i--;
		continue;
	}
	printf( "\b \b" );
	i -= 2;
	continue;
}*/  //简化 0 ==i的情况, 加入'b'的判断中去 


/*
if( LEN-1 == i )
	if( '\r' == ch[i] ) 
		break;
	else
	{
		i--;
		continue;
	}
// 注意条件- -else判断 */


/*ch[0] = getch();printf( "*" );ch[1] = getch();printf( "*" );ch[2] = getch();printf( "*" );*/ 
// 这一段用来实验自己想法的, 忽略它
// printf( "%d %d %d %d", '\n', '\r', ' ', '	' );
// 10换行 13回车 32空格 9制表    这一段是为了看看电脑里回车键到底会读取哪个字符, 最后结果看还是读取了\r, \n被直接扣掉了么 




  又在书上看到getch移植性不好, getchar更好..那, 就要用程序改成getchar读取字符,然后马上用\b*覆盖掉, 在有不符合的字符输入时无视之..但是输入[enter]怎么破,退不回去.

  over


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值