[问题] 处理字串的函式问题

楼主: 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