递归实现char str[]数组倒置出现问题。(继JAVA实现数组倒置低归贴)

xxgamexx 2008-10-11 04:13:28
看到CSDN热贴上

#include <cstdlib>
#include <iostream>
using namespace std;
void reverse(char *str,int left,int right)
{

if(left<right)
{
char c=str[left];
str[left]=str[right];
str[right]=c;
reverse(str,++left,--right);
}

};
int main(int argc, char *argv[])
{
char str[]={'1','2','3','4','5','6','7'};
cout<<sizeof(str)<<endl;
reverse(str,0,sizeof(str)-1);
cout<<str<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}




不知道为什么,上段代码发生溢出了

请高手们看看~

Result:7654321舜€|?"
...全文
146 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxgamexx 2008-10-11
  • 打赏
  • 举报
回复
谢谢 结贴
xxgamexx 2008-10-11
  • 打赏
  • 举报
回复
原来char str[]也当作“”字符串处理哦~
帅得不敢出门 2008-10-11
  • 打赏
  • 举报
回复

int main(){
char str[]="1234567";
//或者 char str[]={'1','2','3','4','5','6','7','\0'};
cout<<str<<endl;
return 0;
}

这样输出字符串就没有问题
帅得不敢出门 2008-10-11
  • 打赏
  • 举报
回复

int main(){
char str[]={'1','2','3','4','5','6','7'}; //这里没有'\0'结束 则输出时就会出问题了
cout<<str<<endl;
return 0;
}
星羽 2008-10-11
  • 打赏
  • 举报
回复

#include <cstdlib>
#include <iostream>
using namespace std;
void reverse(char *str,int left,int right)
{

if(left<right)
{
char c=str[left];
str[left]=str[right];
str[right]=c;
reverse(str,++left,--right);
}

};
int main(int argc, char *argv[])
{
char str[]={'1','2','3','4','5','6','7', '\0'};
int len = strlen(str);
cout<<len<<endl;
reverse(str,0,len-1);
// str[len] = '\0'; 不要这个也没关系
cout<<str<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}


星羽 2008-10-11
  • 打赏
  • 举报
回复


#include <cstdlib>
#include <iostream>
using namespace std;
void reverse(char *str,int left,int right)
{

if(left<right)
{
char c=str[left];
str[left]=str[right];
str[right]=c;
reverse(str,++left,--right);
}

};
int main(int argc, char *argv[])
{
char str[]={'1','2','3','4','5','6','7', '\0'};
int len = strlen(str);
cout<<len<<endl;
reverse(str,0,len-1);
str[len] = '\0';
cout<<str<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

-----------

7
7654321
请按任意键继续. . .








阿呆_ 2008-10-11
  • 打赏
  • 举报
回复
没有溢出, str本来就不是字符串(没有\0结尾), 你把它当字符串打印当然可能跟一些乱码

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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