0

我试图使用另一个指针更改字符串的一部分。我有的

    char** string = (char**) malloc (sizeof(char*));
*string = (char*) malloc (100);
*string = "trololol";

char* stringP = *string;
stringP += 3;
stringP = "ABC";
printf("original string : %s\n\n", *string);
printf("stringP : %s\n\n", stringP);

我得到了什么

original string : trololol;
stringP : ABC;

我想要的是 troABCol 在他们两个中:D

我知道我有一个指向字符串 (char**) 的指针,因为这就是我在方法中执行此操作所需要的。

4

2 回答 2

1

你需要做strcpy(*string, "trololol")而不是*string = "trololol";。您的解决方案会带来内存泄漏,因为它将分配的内存指针替换为malloc()指向数据的指针,其中包含预分配的“trololol”字符串。

strcpy()复制指向的纯字符串,而不是stringP = "ABC";,您可以这样做memcpy(stringP, "ABC", 3)(在末尾strcpy追加,而仅复制被告知要复制的数据)。\0memcpy

于 2012-10-15T15:03:46.927 回答
0

阅读阿米特的答案。另外,当你写

stringP = "ABC";

您只是将指针更改为指向不同的字符串;你没有改变它指向的字符串。你应该抬头memcpystrcpy

于 2012-10-15T15:05:38.603 回答