附加到字符串作为输入参数

时间:2018-04-13 23:41:22

标签: c string strcpy

我在C例程中生成字符串时遇到问题。

目标

  • 让函数生成自定义字符串并返回值
  • e.g。 'void getName(char ** name)'

尝试

int main(void) {
    char *name;
    getName(&name);
}

void getName(char **name) {
    *name = "#";                    // Load with prefix
    //?strcpy(*name[1], "123");     // Goal: "#123"
}

如何getName()生成#123,如此处所示?

1 个答案:

答案 0 :(得分:2)

第一个问题:使用malloc分配内存。

char *name = malloc(sizeof("#123")+1);

即使您在分配内存后运行它,也会产生运行时错误;正如你所做的那样:

*name = "#";

问题首先是为5个字符分配空间并将指针指向该内存的开头。然后在第二行中,将指针指向一个字符串文字,导致内存泄漏。

指针不再指向已分配的内存。

你想这样做:

int main(void) {
    char *name = malloc(sizeof("#123")+1);
    getName(&name);
    printf("%s", name);
    free(name);
    name = NULL;
}

void getName(char **name) {
   strcpy((*name), "#");
   strcat(*name,"123");
}