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

Appending to string as input argument

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

目标

尝试

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

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

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

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

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

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

*name = "#";

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

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

你会喜欢这样做:

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");
}