发布网友 发布时间:2022-04-21 22:11
共3个回答
热心网友 时间:2023-08-25 15:21
1 b[8] 定义一个数组变量b,占用8个字节
你想要从键盘输入8个字符,通过gets函数接收数据。
但是,gets内部是这么干的:
不管你输入几个字符,都要在末尾补一个'\0'
从键盘接收了8个字符放入数组b以后,b就被占满了,补的0就顺序放在了数组b的外边。恰好,数组b的外面就是数组a,补的0挤占了数组a的第一个字节。
然后无论怎么比较,这两个数组都是不等的,结果就是wrong
-----------
把数组b的空间定义的大一点,比如b[1000],要定义的足够大,让键盘怎么输入都占不满。
热心网友 时间:2023-08-25 15:21
把b[8]改成b[9]或数字更大一点就可以了!热心网友 时间:2023-08-25 15:21
#include<stdio.h>
#include<string.h>
int main() {
char a[] = "qwertyui",b[19];
int i,x = 1;
printf("Please input password (qwertyui)\n");
gets(b);
for(i = 0;a[i];i++) if(a[i] != b[i]) break;
f(x == 1) printf("Login!\n");
else printf("Wrong password!\n");
return 0;
}