gpt4 book ai didi

c - Printf正在打印2个变量的内容

转载 作者:行者123 更新时间:2023-11-30 19:32:47 24 4
gpt4 key购买 nike

当我偶然发现一个在线课程时,我正在做一个练习,我剥离了几乎所有内容的代码,但是这种情况仍在发生,我的代码如下

static const char alphabet1[] = "abcd";
void mycrack(char* hashed)
{
char pass[4];
char salt[2];
for (int a = 0, size = sizeof(alphabet1); a < size - 1; ++a) {
for (int b = 0, size = sizeof(alphabet1); b < size - 1; ++b) {
for (int c = 0, size = sizeof(alphabet1); c < size - 1; ++c) {
for (int d = 0, size = sizeof(alphabet1); d < size - 1; ++d) {

pass[a] = alphabet1[a];
pass[b] = alphabet1[b];
pass[c] = alphabet1[c];
pass[d] = alphabet1[d];
salt[0] = '5';
salt[1] = '0';



printf("salt:%s \n",salt);


}
}
}
}
}
int main(int argc, string argv[1])
{
mycrack(argv[1]);

return 0;
}


但是在应该printf为每个信号发送盐(50)的地方,我得到了盐+传递:ex

salt:50a     
salt:50ab
salt:50abc
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd


请注意我知道我不应该在循环内重新声明一个静态值,但是我改编了代码,原始代码取决于argv输入,因此更难以举例说明。

最佳答案

@Someprogrammerdude在评论中回答的问题:

“您似乎忘记了C中的char字符串实际上称为以null终止的字节字符串。null终止符不要忘记,这一点很重要。请注意,null终止符是字符'\ 0',而不是null指针(例如NULL是。当然,这意味着两个字符的字符串需要三个字符的空格才能适合终止符。”



char pass[5] = "";
char salt[3] = "";


代替

char pass[4];
char salt[2];

关于c - Printf正在打印2个变量的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708732/

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