黑马程序员技术交流社区

标题: 大家觉得这个函数精简不 [打印本页]

作者: carshoel    时间: 2015-6-29 21:02
标题: 大家觉得这个函数精简不
*
写一个程序,设定要运行某个代码前先要输入密码。共3次输入机会。
*/
int at()
{
        int i=2;
        char *s="yw123";//定义登录密码
        char a[100]={0};
        printf("输入密码:\n");
        gets(a);//接收用户输入的密码
        while(strcmp(s,a))//循环条件:当判断密码相同返回0,循环终止
        {
                if(!i)//当i=0时
                {
                        printf("错误已达3次,按任意键退出:\n");
                        gets(a);//避免程序“闪退”,方便用户观看程序运行结果
                        return 0;//密码未通过返回 0
                }else{
                        printf("密码错误,还剩%d次机会:\n",i);
                        i--;//计数器,统计密码输入错误次数
                }
                memset(a,0,sizeof(a));
                gets(a);//接收用户输入的密码
                if(!strcmp(s,a))
                {
                        printf("密码通过\n");
                        return 1;//密码通过,返回 1
                }
        }
       
}
作者: 张国繁    时间: 2015-6-29 21:09
还可以啊,找大神给你优化下
作者: carshoel    时间: 2015-6-29 21:23
张国繁 发表于 2015-6-29 21:09
还可以啊,找大神给你优化下

这不是正在找嘛,麻烦你帮给优化下撒:lol
作者: 沙睿    时间: 2015-6-29 21:53
gets 可用别的代替,因为这个方法不安全..
作者: zhao_HHH    时间: 2015-6-29 22:43
已经不错了
作者: 294250051    时间: 2015-6-29 22:58
最好还是不要用gets(),这个程序应该会报错的,因为系统不知道你要接受多少字符,数组的大小你这样声明是一个定值。  这个程序对于初学者来说可以说准确的应用了一些现成的函数,写项目的时候如果能准确的想到这些函数就不错了!我反正有时候经常忘。不过可以给你一个建议,函数的命名都是很直白的,一般看了函数名就知道什么意思了~ 有助于你的记忆。  不过这些封装好的函数也不是想有就有的,比如说max比较大小挺简单吧,但是math.h里面还真没写~好好加油吧~
作者: carshoel    时间: 2015-6-30 11:09
zhao_HHH 发表于 2015-6-29 22:43
已经不错了

谢谢建议,gets改为fgets函数,超过的字符串会记入下次输入的值,从而浪费机会
作者: carshoel    时间: 2015-6-30 11:13
沙睿 发表于 2015-6-29 21:53
gets 可用别的代替,因为这个方法不安全..

恩,暂没想到哦
作者: qiushuo    时间: 2015-6-30 14:26
大神一般都可以




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2