作者dg456trgv (風行草)
看板C_and_CPP
標題[問題] 處理字串的函式問題
時間Sun Apr 10 01:37:03 2016
附上原始碼
http://ideone.com/GhVb5v
這是一本書上的練習題
題目是寫一個函式:
char* copyStr(int n,const char *str)
將傳入的str複製n次後回傳
在main()裡面的呼叫敘述是dupStr=copyStr(n,srcStr);
現在有個問題是我這樣寫會編譯錯誤:
return makes pointer from integer without a cast
老實我google後還是不懂為什麼這樣會錯?
也不確定我讓函式傳回一個陣列的指標是不是對的?
我的基礎不夠好,能否請各位指點一下? 感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.219.23
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1460223426.A.C5C.html
1F:→ uranusjr: 根本不對啊, 你這樣如果需要 80 個字元以上不就炸了 04/10 01:56
2F:→ uranusjr: 在回傳值之前你應該先處理很多其他問題 04/10 01:57
3F:→ s89227: char *dupStr[80] 這個好怪 04/10 02:06
4F:→ s89227: 然後這種東西用動態記憶體配置會比較好 04/10 02:07
5F:→ s89227: 不然就像樓上說的一樣,超過80就爆炸了 04/10 02:07
6F:推 LPH66: 然後關於你的問題, 你回傳的方式不對 04/10 02:59
7F:→ LPH66: 不過當你解決 80 個字的問題之後理論上這裡就沒問題了 04/10 02:59
8F:→ LPH66: 另外, 函式回傳「區域變數的指標」是不對的 04/10 02:59
9F:→ LPH66: 這部份請參照置底十三誡之五, 那裡也有些關於這問題的提示 04/10 03:00
10F:推 weiclin: 看這個函式的宣告, 一般就兩個作法 04/10 08:27
11F:→ weiclin: 一個是在函式內 malloc 然後複製好回傳 04/10 08:28
12F:→ weiclin: 但要記得把回傳值 free 掉, 不然就 memory leak 了 04/10 08:29
13F:→ weiclin: 另一個是在函式內有一個 static char buf[BUF_LEN] 04/10 08:30
14F:→ weiclin: 直接複製到這個 buf 後回傳, 然後拿到的人就不用 free 04/10 08:30
15F:→ weiclin: 但是就不能這樣用:f(copyStr(1,"abc"),copystr(2,"def") 04/10 08:32
16F:→ weiclin: 題外話,寫這種互動式的要處理輸入真是苦差事.... 04/10 08:34
18F:→ weiclin: 只改動一點你的函式,所以他還是會炸掉的 04/10 08:42