密码功能无效

时间:2013-10-13 09:26:35

标签: c function crash passwords

好的,所以我正在尝试制作一个需要登录名和密码的C程序。 在第一次运行时,它将要求用户为他输入登录名和密码,然后它将这些信息保存在全局结构中,并且此全局结构将保存到磁盘。 我遇到问题的部分是密码。 我正在尝试制作代码,以便人们的密码在屏幕上不可见。这是我的密码功能:

void senha(void)
{
    static int senhac = 0;
    char temps[32];
    do
    {
        temps[senhac] = getchar();
        if(temps[senhac] == EOF)
            return;
        putchar('*');
        conta->senha[senhac] = temps[senhac];
        senhac++;
        fflush(stdin);
    }
    while(1);
}

并且全局结构就是这个:

struct accounts {
    char login[32];
    char senha[32];
    };
struct accounts *conta;

当程序到达“senha(void)”函数时,它会崩溃。 编译器不显示任何警告或错误。 什么可能出错?

2 个答案:

答案 0 :(得分:0)

   do
    {
        temps[senhac] = getchar();
        if(temps[senhac] == EOF)
            return;
        putchar('*');
        conta->senha[senhac] = temps[senhac];
        senhac++;
        fflush(stdin);
    }
    while(1); 

你重复的循环超过了temps数组的大小array out of bounds and overflow

检查条件while(senhac<32);

答案 1 :(得分:0)

getchar()返回int。将temps[32]声明为int。如果您不在MS-DOS上fflush(stdin);将调用未定义的行为。