gpt4 book ai didi

c - 追加到字符串后使其为空,C

转载 作者:行者123 更新时间:2023-11-30 14:41:51 24 4
gpt4 key购买 nike

我有一个向字符串添加字符的函数,下面代码中的注释解释了问题。我认为我错误地使用了指针。

int main(int argc, string argv[]) {
string hash = argv[1]; // Read from argv
crack_password(hash);
}

void crack_password(char * hash) {
printf("%d\n", hash); // prints correctly.
string * password_guess; // = some functionality, hash doesn't change
match_password(password_guess, hash);
}

match_password(char * password_guess, char * hash) {
printf("%d\n", hash) // prints correctly.
char first_two_letters[2] = "";
append(first_two_letters, hash[0]);

printf("Hash: %s\n", hash);
append(first_two_letters, hash[1]);
printf("%d\n", first_two_letters); // prints first two letters of the hash.
printf("%d\n", hash); // hash null here.
}

void append(char * s, char c) {
int len = strlen(s);
s[len] = c;
s[len + 1] = '\0';
}

最佳答案

您的first_two_letters声明太小。它始终是您要保存的字符数+1(对于附加的“\0”)。
hash 存储在堆栈中紧接first_two_letters 之后,这意味着您将first_two_letters 的“\0”写入哈希变量,这就是它显示为空的原因。

char first_two_letters[3] = "";

应该可以解决问题。

关于c - 追加到字符串后使其为空,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54720550/

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