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

Luc*_*fia 0 c malloc

我如何(m)在另一个函数中分配字符串?我已经尝试过2种方式(在代码中只是示例 - 我不会用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);
}
Run Code Online (Sandbox Code Playgroud)

我想在main中使用"string",但是在不同的函数中使用mallocate.

谢谢!

pau*_*sm4 5

这是两个例子:

#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;
}
Run Code Online (Sandbox Code Playgroud)

第一个示例传递指针指针:main指定指针; 函数将空间分配给指针; 指针本身通过引用传递.

第二个示例类似,除了函数返回指针而不是更改引用.

如果你只是初始化一个指针,第一个是"更清洁"; 如果要在同一函数中返回多个不同的值,则第二个非常有用.