gpt4 book ai didi

c - 缓冲区溢出c(获取函数)

转载 作者:行者123 更新时间:2023-11-30 18:34:16 26 4
gpt4 key购买 nike

有以下代码,我需要返回0x30以下且不等于0或2的访问级别:

int login() {
int accessLevel = 0xff;
char username[16];
char password[32];
printf("Username (max 15 characters): ");
gets(username);
printf("Password (max 31 characters): ");
gets(password);

if (!strcmp(username, "admin") && !strcmp(password, "{{ create_long_password() }}")) {
accessLevel = 2;
} else if (!strcmp(username, "root") && !strcmp(password, "{{ create_long_password() }}")) {
accessLevel = 0;
} else if (!strcmp(username, "artist") && !strcmp(password, "my-password-is-secret")) {
accessLevel = 0x80;
}

return accessLevel;
}

我输入了用户名 16 'a',将访问级别重置为 0(然后添加了空格,将访问权限设置为 20 并给出了所需的输出)。但是,我希望缓冲区覆盖密码,而不是访问级别,因为它是“以下内存”。我想我误解了缓冲区的工作原理并希望得到解释。另外,为什么第16个字符重置为0?

提前致谢!

最佳答案

Strcmp 将匹配任意数量的字符,由空终止字符的第一个实例给出。所有字符串文字必须以 null 结尾,并以\0

使用 strncmp 只会比较参数中给出的字符数量

关于c - 缓冲区溢出c(获取函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52653855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com