| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 953 人关注过本帖
标题:输入密码的问题,结果总是密码错误。
取消只看楼主 加入收藏
bcliugw1993
Rank: 1
来 自:中国山东菏泽
等 级:新手上路
帖 子:22
专家分:9
注 册:2011-10-13
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:2 
输入密码的问题,结果总是密码错误。
前言:刚学了字符数组,并按照书上的例题,写了个输入密码的程序。
症结:无论输入正确密码,还是输入错误密码,结果总显示的是“错误密码”。
希望高手指点!

具体程序:


# include

# define N 6
void main()
{
    char code[N] = {'h', 'e', 'l', 'l', 'o'};
    char user[N];
    int i, k, t = 0;
    while (1)
    {
        k = 1;
        printf ("\n");
        printf ("Please input your key: ");
        for (i = 0; i < N; i ++)
            user[i] = getchar ();
        for (i = 0; i < N; i ++)
        {
            if (code[i] != user[i])
            {
                k = 0;
                break;
            }
        }
        
        t ++;
        if (k == 0)
        {
            printf ("\n Key Error!");
        }
        else
        {
            printf ("\n Welcome!");
            break;
        }
        if (t >= 3)
        {
            printf ("\n Your chances are not left, so you'll exit!");
            break;
        }
    }
}
搜索更多相关主题的帖子: 密码 输入密码 include 
2011-12-06 13:30
bcliugw1993
Rank: 1
来 自:中国山东菏泽
等 级:新手上路
帖 子:22
专家分:9
注 册:2011-10-13
收藏
得分:0 
哦,这样啊,复制的时候出个问题。。
我先前认为初始化的时候还有一个长度是存储\0的,看来不需要啊。
2011-12-06 14:04
bcliugw1993
Rank: 1
来 自:中国山东菏泽
等 级:新手上路
帖 子:22
专家分:9
注 册:2011-10-13
收藏
得分:0 
回复 2楼 于祥
    直接把N修改成5不行,那样不能完成第二次循环,即第一次密码输入错误的时候。那么第二次或第三次输入都会显示“密码错误”。
    我认为,用户输入的时候,是输入的连续的字符,应该属于字符串,这里没有用到gets()函数。那么,初始化的时候,应该是对字符串变量进行初始化,而不是对字符数组进行初始化。
    对字符数组进行初始化这种情况,应该输入5个字符,即输入一个字符接着输入一个空格,然后与code[i]进行比较,那这样的化,就不符合用户的要求了,毕竟谁输入密码的时候要输一个就按一下空格呀。
    应该把控制if语句(比较密码)的for循环修改为for(i = 0; i < N - 1; i ++)其余不变,这样可以解决问题。
    看来我们教材上的程序出了个小错误啊,我有空问问老师去。
2011-12-06 15:21
快速回复:输入密码的问题,结果总是密码错误。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011984 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved