gpt4 book ai didi

c - 在另一个函数中分配字符串 (char*)

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

我如何 (m) 在另一个函数中分配字符串?我尝试通过两种方式来做到这一点(在代码中只是示例 - 我不会用 argv 来做到这一点)。

void someFunction(char* string, char** argv) {
string = (char*)malloc(strlen(argv[2]) + 1);
strcpy(string,argv[2]);
// string[strlen(argv[2]) + 1] = '\0' //should I do this now?
printf("%s",string); //outputs string (works fine)
}

int main(int argc, char** argv) {
char *string;
char *string2;

someFunction(string,argv);
printf("%s",string); //outputs (null)
free(string);

someFunction(&*string2,argv);
printf("%s",string2); //outputs (null)
free(string2);
}

我想在 main 中使用“string”,但在不同的函数中分配它。

谢谢!

最佳答案

这里有两个例子:

#include <stdio.h>
#include <string.h>
#include <malloc.h>

void alloc1 (char **new_string, char *text) {
*new_string = malloc(strlen(text)+1);
strcpy (*new_string, text);
}

char * alloc2(char *text) {

char *new_string = malloc(strlen(text)+1);
strcpy (new_string, text);
return new_string;
}

int
main (int argc, char *argv[]) {
char *s;

/* Make sure we entered a command line argument */
if (argc < 2) {
printf ("USAGE: myprog SOMETHING\n");
return 1;
}

alloc1(&s, argv[1]);
printf ("alloc1: s=%s\n", s);
free (s);

s = alloc2 (argv[1]);
printf ("alloc2: s=%s\n", s);
free (s);

return 0;
}

第一个示例将指针传递给指针:您的 main 分配指针;该函数为指针分配空间;指针本身是 passed by reference .

第二个例子类似,除了函数返回指针而不是改变引用。

如果您只初始化一个指针,第一个是“更干净”;如果您想在同一个函数中返回多个不同的值,则第二个很有用。

关于c - 在另一个函数中分配字符串 (char*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437864/

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