好的,所以我试图制作一个需要登录名和密码的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)”功能时,它将崩溃。
编译器不显示任何警告或错误。
可能出什么问题了?
最佳答案
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);