好的,所以在我的程序中,我有一個主要函數,我在其中輸入一個字符串到緩衝區(char buffer [20])。它將它作爲char *傳遞給創建鏈接列表結構的函數,將結構的char *值設置爲等於輸入文本char *,然後返回結構指針並將其放在列表的前面。現在,當我放入另一個字符串來創建另一個鏈表結構時,它將結構的char *值設置爲我剛纔放入的文本。我怎樣才能使它能夠在不同的鏈表結構中存儲不同的字符串?防止鏈接列表中的char *發生變化
0
A
回答
1
問題是,您要放入鏈表的所有指針都指向完全相同的位置 - 您提到的char buffer[20]
。每次輸入一個新的字符串時,它都會覆蓋緩衝區中的舊字符串。您讀取的以前的指針現在指向最近讀取的字符串,該指針現在仍然指向字符緩衝區。
解決方案是給strdup
緩衝區,並將strdup
的結果存儲在鏈表中。這將使用從heap分配的空間複製字符串(因此是名稱),因此每個字符串都有自己的內存。
不要忘了最後free
每個字符串由strdup
返回時,當你完成他們!
+0
謝謝,完美的工作。 – user2226224
0
您可能會寫入相同的buffer
,並且有兩個指向該緩衝區的char *
指針。
您需要複製緩衝區,例如與strdup
(確保完成後釋放字符串)。或者,將char *
替換爲鏈接列表節點結構中的char [20]
,然後將字符串替換爲該字符串。
相關問題
- 1. 防止Chrome瀏覽器中的鏈接點擊發生變化
- 2. 防止char *向量中的最後一個元素髮生變化
- 3. 如何防止Eclipse發生變化
- 4. 如何防止datepicker css發生變化
- 5. 防止菜單高度發生變化?
- 6. 防止佈局方向發生變化
- 7. 防止發生變量替換髮生
- 8. 在初始化時防止角度發生變化選擇框
- 9. 防止界面在旋轉過程中發生變化
- 10. 防止當前選定的菜單項顏色發生變化
- 11. CSS多列布局可防止高度發生變化時移動列
- 12. 防止頁面鏈接
- 13. 鏈接列表的頭部在傳遞給函數時發生變化
- 14. 在鏈接列表中輸入char變量
- 15. 如何防止JQuery發生排隊(鏈接)
- 16. 如何防止click和fadeOut函數中變量的值發生變化?
- 17. 如何防止鏈接超鏈接
- 18. 如何防止序列化類的變化系列化
- 19. 如何防止Qt鏈接
- 20. 防止單元格公式發生變化
- 21. 防止用戶縮放時Y2Axis發生變化ZedGraph
- 22. 如何防止觸摸時UIButton發生變化?
- 23. Apple如何防止屬性發生變化?
- 24. 如何防止活動標籤在旋轉時發生變化
- 25. Swing:GlassPane防止鼠標指針發生變化
- 26. 防止基礎按鈕文字顏色發生變化
- 27. 如何防止選項卡發生變化
- 28. 訪問鏈接列表中的鏈接列表變量
- 29. 防止序列化
- 30. 如何防止將@ b轉換爲可信列表中的mailto鏈接IE
你能發佈你的代碼的相關片段嗎? – MCeley