字符串和数组的转换处理
今天看到一段代码如下:
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是不是也有问题?