gpt4 book ai didi

更改函数中的字符串

转载 作者:行者123 更新时间:2023-11-30 18:41:39 25 4
gpt4 key购买 nike

如果我有这种函数:开头的 str1= NULL

 Result dosomething(char* str1, char* str){
str1=malloc(strlen(str2)+1); //followed by NULL check
strcpy(str1, str2);
.
.
return something

然后我在其他函数中使用这个函数:

 char* output="hello";
char* input=NULL;
result=dosomething(input,output);

出于某种原因,在使用“dosomething”函数后输入仍然为NULL,尽管如果我在strcpy之后使用printf,我可以看到str1确实更改为“hello”。当我将它们传递给其他函数时,我在这里的 char* 做错了什么吗?

最佳答案

您需要将指针传递给要更改的字符串

Result dosomething(char** str1, char* str){
*str1=malloc(strlen(str2)+1); //followed by NULL check
strcpy(*str1, str2);

调用为

result=dosomething(&input,output);

或者更改函数以返回新分配的字符串,返回NULL以指示错误

char* dosomething(char* str){
char* str1=malloc(strlen(str2)+1); //followed by NULL check
strcpy(str1, str2);
...
return str1;

调用为

input=dosomething(output);
if (input==NULL) {
// error

关于更改函数中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453983/

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