帐号存放在数组,然后用strcmp与一个字符串比较,一直不对,不知道是不是数组溢出问题还是\r的问题 20C

#include
#include
#include
#define zhmaxlen 9

#define mmmaxlen 9

void main()
{
int zhnowlen=0;
// int mmnowlen=0;
int i;
// char mm;
char zhanghao[9];
char str[]="admincfh\r";
printf("温馨提示:\n");
printf("帐号长度不能超过8位,可以是字母或者是数字\n");
printf("请选择以下4种密码的输入:\n");
printf("1:密码");
printf("");
printf("帐号:");
for( ; ; )
{
int s=0;

int i;
for(i=0;i {
zhanghao[i]=getch();
if(zhanghao[i]=='\r')
{
s=1;
break;
}
if(zhanghao[i]==8)
{
if(zhnowlen>0)
{
zhnowlen--;
printf("\b \b");
}

}
if(zhnowlen {
if((zhanghao[i]>='0' && zhanghao[i]<='9') || (zhanghao[i]>='a' && zhanghao[i]<='z') ||((zhanghao[i]>='A' && zhanghao[i]<='Z')))
{
printf("%c",zhanghao[i]);
zhnowlen++;

}

}

}

if(s==1)
{
break;
}
}

printf("\n%s\n",str);
for(i=0;i<=9;i++)
{
printf("%c",zhanghao[i]);
}
printf("\n");
if(strcmp(zhanghao,str)==0)
{
printf("登陆成功");

}

printf("\n");

}

c

2个回答

你有两个地方错了!首先数组zhanghao应该也是10个字节。
同时zhanghao最后你没有赋予'\0'结束符。
zhanghao[i]=getch();
if(zhanghao[i]=='\r')
{
s=1;
zhanghao[i+1] = '\0';
break;
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问