我想请教一个问题,我在C语言中用字符数组作为函数返回值时,会在返回后多出一个0x01对应的字符,下面贴出程序和调试过程:
子函数如下:
char *guess_num(int gen_data[], int input_data[], int n)
{
int i = 0, j = 0, k = 0;
static char result[NUM_GUESS];
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
if(0 == input_data[i]-gen_data[j])
{
if(0 == i-j)
result[k++] = 'A';
else
result[k++] = 'B';
}
if('\0' == result[0])
for(i = 0; i < n; i++)
result[i] = '0';
return result;
}
测试情况如下:
第一个测试
可以看到,当字符数组的四个元素都被赋值之后,返回前没有问题,但是当主函数接收到返回的字符数组的首地址之后,字符数组后面会多出一个1.
第二个测试
当字符数组元素未全部赋值时,返回没问题
第三个测试
又看到了熟悉的1。。。。。。。
烦请各位能否帮我解答这个问题,谢谢!