[問題] char array

看板C_and_CPP作者 (兄弟霸業)時間13年前 (2010/09/02 17:29), 編輯推噓2(2010)
留言12則, 7人參與, 最新討論串1/1
想要實作一個function將某個字串全部取代為 '*' void func(char *str) { char *tmp = str; while(*tmp) *(tmp++) = '*'; } 想請問為什麼要多用一個tmp? 直接寫成 void func(char *str) { while(*str) *(str++) = '*'; } 不行嗎? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.96.70

09/02 17:44, , 1F
下面的寫法也可以 你的疑問是什麼?
09/02 17:44, 1F

09/02 17:54, , 2F
why not?
09/02 17:54, 2F

09/02 18:47, , 3F
就只是多一個變數, 不過多了也有好處, 當你需要查詢舊
09/02 18:47, 3F

09/02 18:48, , 4F
的值、偵錯、從錯誤中回復,留著本來的值會比較好
09/02 18:48, 4F

09/02 21:45, , 5F
了解了 謝謝
09/02 21:45, 5F
※ 編輯: wawi 來自: 140.113.177.105 (09/02 21:45)

09/02 23:58, , 6F
這個問題在write the solid code 這本書有提到
09/02 23:58, 6F

09/02 23:58, , 7F
印象中是不要去對你的輸入做操作,因為你無法保證輸入
09/02 23:58, 7F

09/02 23:59, , 8F
會是什麼妖魔鬼怪
09/02 23:59, 8F

09/03 07:16, , 9F
簡單得說就是絕對不要相信使用者丟給你正確的資料
09/03 07:16, 9F

09/03 17:32, , 10F
回應love大,但是在char *tmp = str的時候,不是指標
09/03 17:32, 10F

09/03 17:32, , 11F
賦值而已嗎?無法拷貝原本array的值吧?
09/03 17:32, 11F

09/03 20:04, , 12F
我指的是參數的原值~ > <
09/03 20:04, 12F
文章代碼(AID): #1CVswKq- (C_and_CPP)