#include <stdio.h>
#include <string.h>
int main(void)
{
char keyword[] = "1234";
char user[10] = {0};
AA:
gets(user);
if (strcmp(user,keyword) == 0)
{
printf ("密码正确");
}else
{
printf ("密码错误");
goto AA;
}
}
怎么输正确的密码都提示密码错误,这是啥原因?
原因:因为编译器有一个对变量和代码有一个优化的功能,对于你在连续定义在一起的变量,编译器可能会,是可能会将这几个变量存放在连续的空间里,当你输入一串超过user[10]的数据时,会改变keyword[]内部的值,因此,你怎么输入正确密码1234都不正确!