簡體   English   中英

用指針更改C字符串值

[英]Change C string value with pointer

我試圖使用另一個指針更改字符串的一部分。 我有的

    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僅復制被告知要復制的數據)。

閱讀阿米特的答案。 另外,當你寫

stringP = "ABC";

您只是在更改指針以指向不同的字符串; 您沒有更改它指向的字符串。 您應該查找memcpystrcpy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM