开发工具:
文件大小: 5kb
下载次数: 0
上传时间: 2011-03-25
详细说明: 纯属练习 可以用来当做众多小程序(例如你的练习程序)的总控制程序,第一次进入提示创建密码,以后就要输入密码,用文件保存密码,按程序代号进入相应的程序。 不足:忘了隐藏密码字符。 即,密码用 **** 表示,这个已经修正了,代码如下: #include #include #include int string_same(char *string_1,char *string_2);/*判断两个字符串是否一致的子函数原型*/ void enter_mima(char *enter_1); //输入密码时,用“*”代替密码 int main(void) { FILE *mimawenjian; /*密码文件变量*/ char mima_1[30],mima_2[30];//用来储存密码的数组 int loop_1; char dh_1[6];//用于记录输入的程序代号 printf(" 欢迎进入程序控制台\n"); printf(& quot;--------------------------------------------------------------------------------"); /****************************************************************************************************************************/ if ((mimawenjian/*密码文件变量*/=fopen("password","r"))==NULL) /*判断密码文件是否存在,以下的程序代码是假设的密码文件不存在*/ { mimawenjian/*密码文件变量*/=fopen("password","w"); //这里表示,既然没密码文件那就新建一个可以写入文件的密码文件 printf("这是你第一次使用本程序,请设置登录密码!\n"); for(;;) /*循环输入密码,直到两次输入的密码一致*/ { printf("请输入你要设置的密码:"); //scanf("%s",mima_1);fflush(stdin); enter_mima(mima_1);fflush(stdin); printf("请再次输入设置的密码:"); //scanf("%s",mima_2);fflush(stdin); enter_mima(mima_2);fflush(stdin); if(string_same(mima_1,mima_2)==1) break; /*这里的意思是,如果两次输入的密码一致时,就跳出循环,准备写入密码*/ else printf("提示:密码输入错误,请重新设置!\n"); /*这里的意思是,如果两次输入的密码不一致时,就提示密码输入错误*/ } printf("你的密码是:%s,请妥善保管!\n",mima_1); fputs(mima_1,mimawenjian); /*将密码写入密码文件*/ fclose(mimawenjian);//关闭密码文件 } /*********************************************************************************************************************************/ //********************************************************************************************************************************* else /*判断密码文件是否存在,以下的程序代码是假设的密码文件存在*/ { //------------------------------------------------ char *n=mima_1,i; // while (( i=fgetc(mimawenjian))!=EOF) // { // *n=i; // 这里的代码表示把密码文件里的密码读出来,并存在数组里 n++; // } // *n='\0'; // //------------------------------------------------- fclose(mimawenjian); //关闭密码文件 //------------------------------------------------- for(loop_1=1;loop_1<=5;loop_1++) //这里的代码表示,最多给予五次机会尝试输入正确的密码 { printf("请输入密码:"); //scanf("%s",mima_2);fflush(stdin); enter_mima(mima_2);fflush(stdin); if(string_same(mima_1,mima_2)==0) //假如密码输入不正确,就执行下面的代码 { if(loop_1<5) printf("密码错误,你还剩下 %d 次机会\n",5-loop_1); else { printf("你没有机会了,程序无法识别你的身份,请按任意键退出程序 ..."); getch(); return 0; } } else break; //假如输入了正确的密码,就执行下面的代码 } } /////////////////////////////////////////////////////////////////////////////////////////////////////// printf("--------------------------------------------------------------------------------"); printf("“CLANK” 欢迎进入程序控制台!"); printf("程序控制台介绍:输入下面的程序代号,就可以执行相应代号的程序(输入“exit”退出程序)\n"); printf("--------------------------------------------------------------------------------"); printf("\n"); ///////////////////////////////////////////////////////////////////////////////////////////////////////下面的程序是循环输入程序代号,知道用户主动退出 CLANK: printf("请输入程序代号:"); fgets(dh_1,6,stdin);fflush(stdin); if(tolower((int)dh_1[0])=='e' && tolower((int)dh_1[1])=='x' && tolower((int)dh_1[2])=='i' && tolower((int)dh_1[3])=='t' && tolower((int)dh_1[4])=='\n' ) return 0; goto CLANK; } //================================================================================================================================================================= int string_same(char *string_1,char *string_2) /*判断两个字符串是否一致的子函数*/ { int i_1=0,i_2=0; int num_1=0; ////////////////////////////////////// while (*string_1 != '\0') // { // i_1++; // string_1++; // 这里的意思是判断两个字符串的长度是否一致 } // while (*string_2 != '\0') // { // i_2++; // string_2++; // } // ////////////////////////////////////// string_1--; string_2--; ////////////////////////////////////// if (i_1 != i_2) return 0; // else // { // while (i_1 >0) // { // if (*string_1==*string_2) num_1++; //这里的意思是判断两个字符串是否相同 string_1--; // string_2--; // i_1--; // } // if (num_1 != i_2 ) return 0; // else return 1; // } // ////////////////////////////////////// } /******************************************************************************************************/ void enter_mima(char *enter_1) //这段代码表示 用 * 号来替代密码,哎,太难搞了 { int i=0,j=0; char c; for(;;) { c=getch(); /*用字符变量 c 来储存输入的字符*/ if(j==0) //用来判断第一个字符的输入 { if((int)c==13) //这里表示第一个字符输入的是回车 { printf("哦,不,你必须输入密码,这是规则!"); printf("\n请输入密码:"); } else if((int)c==8) *enter_1='\0'; //这里表示第一个字符输入的是退格键 else //正常输入 { j=1;*enter_1=c;enter_1++;i++; printf("*"); } } else //假如不是判断第一个字符 { if(i>=29 && (int)c!=13 && (int)c != 8 ) //到达第29个字符时,表示最多输入29个字符 { *enter_1='\0'; } else if((int)c==8) //当输入删除键是,删除前面的密码 { if(i>0) { i--; enter_1--; *enter_1='\0'; printf("\b");printf(" ");printf("\b"); } else { j=0; *enter_1='\0'; } } else if((int)c==13) //当输入回车时,就推出输入循环 { break; } else { *enter_1=c; enter_1 ++; i++; printf("*"); } } } *enter_1='\0'; printf("\n"); } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.