[問題] 處理字串的函式問題

作者: dg456trgv (風行草)   2016-04-10 01:37:03
附上原始碼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後還是不懂為什麼這樣會錯?
也不確定我讓函式傳回一個陣列的指標是不是對的?
我的基礎不夠好,能否請各位指點一下? 感謝!
作者: uranusjr (←這人是超級笨蛋)   2016-04-10 01:56:00
根本不對啊, 你這樣如果需要 80 個字元以上不就炸了在回傳值之前你應該先處理很多其他問題
作者: s89227 (Kei)   2016-04-10 02:06:00
char *dupStr[80] 這個好怪然後這種東西用動態記憶體配置會比較好不然就像樓上說的一樣,超過80就爆炸了
作者: LPH66 (-6.2598534e+18f)   2016-04-10 02:59:00
然後關於你的問題, 你回傳的方式不對不過當你解決 80 個字的問題之後理論上這裡就沒問題了另外, 函式回傳「區域變數的指標」是不對的這部份請參照置底十三誡之五, 那裡也有些關於這問題的提示
作者: weiclin (CC)   2016-04-10 08:27:00
看這個函式的宣告, 一般就兩個作法一個是在函式內 malloc 然後複製好回傳但要記得把回傳值 free 掉, 不然就 memory leak 了另一個是在函式內有一個 static char buf[BUF_LEN]直接複製到這個 buf 後回傳, 然後拿到的人就不用 free但是就不能這樣用:f(copyStr(1,"abc"),copystr(2,"def")題外話,寫這種互動式的要處理輸入真是苦差事....稍微玩了一下,僅供參考 http://ideone.com/R5uZx7只改動一點你的函式,所以他還是會炸掉的

Links booklink

Contact Us: admin [ a t ] ucptt.com