gpt4 book ai didi

c - 如何将 char* 发送到函数并让它更改 C 中 char* 的内容?

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:27 24 4
gpt4 key购买 nike

我已经在网上尝试和搜索了太久,但没有成功。我尝试了很多建议的答案,但没有任何效果。

我基本上想发送 char*。如有必要,它可以将其设为 NULL,但宁愿函数修改一个已经有内容的 char*

示例:

char *old = "kit";
function(old){ //does stuff and writes "kat" to old}

printf("new = %s", old);

result: new = kat

我该怎么做?

谢谢

编辑:

我目前正在尝试的是:

calling_function(char *in){ 
char **old = NULL;
function(&old);
printf("old in calling function is now = %s", *old);
}

function(**old){
<does stuff to get char *another_string = "kat">
*old = another_string;
printf("old is now = %s ", *old);
}

结果是:

old is now "kat"
old in calling function is now =

它立即存在系统并出现未指定的错误 exit(-1) 然后挂起。

最佳答案

char* 只不过是指向一些字节的地址,然后将这些字节解释为字符串,如何做你需要做的实际上取决于你需要做什么。

如果你想改变字符串的一个字符,那么一个普通的char*(非const)指针就足够了:

void function(char *data) {
data[0] = 'a';
}

相反,如果您想用另一个字符串(可能长度不同)替换整个字符串,则需要传递包含该地址的地址,以便您可以直接将其替换为新地址(即指向不同的字符串):

void function(char **data) {
*data = strdup("newstring");
// strdup is used because a string literal must be considered as const
// otherwise you could invoke UB by modifying the returned string
}

char *value;
function(&value);

关于c - 如何将 char* 发送到函数并让它更改 C 中 char* 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20404533/

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