我试图使用另一个指针来更改字符串的一部分。
我有的
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 **)的指针,因为那是在方法内部进行此操作所需的。
最佳答案
您需要执行strcpy(*string, "trololol")
而不是*string = "trololol"
;。您的解决方案带来了内存泄漏,因为它用指向数据的指针替换了malloc()
分配的内存指针,该指针包含预先分配的“ trololol”字符串。strcpy()
复制指向的纯字符串,而不是stringP = "ABC";
,您可以执行memcpy(stringP, "ABC", 3)
(strcpy
在末尾附加\0
,而memcpy
仅复制被告知要复制的数据)。
关于c - 用指针更改C字符串值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12898379/