字符串和数组的转换处理

johndiyang 2012-09-05 09:12:05
今天看到一段代码如下:

int ProcessX(int iInput, int& iNum, char * strRst, int& iOutput);

char strRst[10] = "";
CPPUNIT_ASSERT(0 == ProcessX(iInput, iNum, strRst, iOutput));
CPPUNIT_ASSERT(0 == strcmp(strRst,"-2 3 5 4 6"));

这是一个考试题目中的代码,要求实现ProcessX。大家觉得strcmp的用法是不是有问题?


我自己测试的时候发现strcmp经常不对,strRst的返回值为10个字符,在ProcessX中给strRst的前6个字符附上strcmp的第二个参数一样的值,但后面的4个字符不做处理会由系统赋上随机值,strcmp的比较值非零。

但在ProcessX中,并没有办法知道strRst的长度。ProcessX是不是也有问题?
...全文
109 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
EmberSpirit 2012-09-05
  • 打赏
  • 举报
回复
"-2 3 5 4 6" 这是6个字符?( 空格 最后的\0 )都算字符的,所以是11个字符。
再看 strRst[10]
明白问题在哪了吧?
图灵狗 2012-09-05
  • 打赏
  • 举报
回复
字符串只比较到结束符'\0',所以你留意一下结束符的地方就明白了。
nice_cxf 2012-09-05
  • 打赏
  • 举报
回复
题目显然有问题,"-2 3 5 4 6"加上结束是11个字节,如果不越界写数据,肯定无法实现
www_adintr_com 2012-09-05
  • 打赏
  • 举报
回复
如果你的函数只需要 strRst 的前 6 个字符有效, 你得把第七个字符设置为 '\0'. 字符串需要以 '\0' 来结尾.

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧