c语言 问题 大家帮忙看一下 多谢了

2025-02-28 23:45:09
推荐回答(6个)
回答1:

因为字符串是以字符‘\0’结束的

str[0]='h';str[1]='e';str[2]='l';str[3]='l';str[4]='o';str[5]='\0';

函数的功能是把str的字符串中的字符全部颠倒

所以就有reverse_str[5]='h';reverse_str[4]='e';reverse_str[3]='l';reverse_str[2]='l';reverse_str[1]='o';刚开始的reverse_str[0]='0';
但是没有字符串结束标志

所以要么你换成
char reverse_str[7] = "0";

printf("%s\n",reverse_str);之前加一句reverse_str[6]='\0';

回答2:

定义的时候应该定义为
char reverse_str[7] = "0‘’;
你应该在reverse_str[5-i] = str[i];
之后加上 reverse_str[6]=‘\0’; 加一个字符串结束符,

回答3:

数据溢出了。

#include
int main(void)
{
int i;
char str[6] = "hello";
char reverse_str[7] = "0"; /*此处不能是6*/

printf("%s\n",str);
for (i = 0; i < 5; i++)
reverse_str[5-i] = str[i];
printf("%s\n",reverse_str);

return 0;
}

C中字符串数组默认末尾还有一个不可见的字符'\0',所以如果char reverse_str[6] = "0";的话,后面把str数组赋值给reverse_str数组时产生下标超出,所以产生了一些不可预知的字符。

回答4:

就是上面的大神回答的那样

回答5:

你数组赋值有问题,而且输出也不是你写的那样子。。。
i=5时并没有赋值,所以输出错误

回答6:

字符串reverse_str没有结束符'\0',在循环操作结束后加上就可以了