C++ 中字符串翻转问题

sanhu871123 2011-06-02 06:05:00
#include "iostream.h"
#include "string.h"

void main()
{
int i=0;
int aLength=0;
char* aStr=new char[1];
cout<<"Input One String"<<endl;
cin>>aStr;

while(aStr[i]!='\0')
{
aLength++;
i++;
}

//cout<<strlen(aStr)<<endl;

char* aNewStr=new char[aLength];

i=0;
while(aStr[i]!='\0')
{
aNewStr[aLength-i+1]=aStr[i];
i++;
}

cout<<aNewStr<<endl;

i=0;
while(aStr[i]!='\0')
{
cout<<aNewStr[i];
i+=2;
}


}

上面是源码 但是每次翻转过后总是有乱码,请问原因??
...全文
278 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
AgeOfJunQian 2011-08-03
  • 打赏
  • 举报
回复
不开任何变量 最高效解决办法
char* ReverseCha1( char* str )
{
//解题思路:不另申请变量或空间
//借用传入字串里的'\0'位


int i = 0;
int nNum = strlen( str );
int j = nNum - i - 1;
while( j > i )
{
str[ nNum ] = str[ i ];
str[ i ] = str[ j ];
str[ j ] = str[ nNum ];
i++;
j = nNum - i - 1;
}
//恢复最后的字串结束标记
str[ nNum ] = '\0';
return str;
}
sanhu871123 2011-06-02
  • 打赏
  • 举报
回复
#include "iostream.h"
#include "string.h"

void main()
{
int i=0,j=0;;
int aLength=0;
char* aStr=new char[1];
cout<<"Input One String"<<endl;
cin>>aStr;

while(aStr[i]!='\0')
{
aLength++;
i++;
}

//cout<<strlen(aStr)<<endl;

char* aNewStr=new char[aLength+1];


while(aStr[j]!='\0')
{
aNewStr[aLength-j-1]=aStr[j];
j++;


}
aNewStr[aLength]='\0';

cout<<aNewStr<<endl;

i=0;
while(aStr[i]!='\0')
{
cout<<aNewStr[i];
i+=2;
}


}

现在好了 这是源码
sanhu871123 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wy715464489 的回复:]
多分配一个字符的空间,翻转完了过后,把最后一字符变为'\0'
[/Quote]

恩 却是是这样 现在好了
wy715464489 2011-06-02
  • 打赏
  • 举报
回复
多分配一个字符的空间,翻转完了过后,把最后一字符变为'\0'
sanhu871123 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 maoxing63570 的回复:]
反转后要记得添加'\0'字符
[/Quote]

在我的源程序里咋加啊 ?我加了之后就没内容了
  • 打赏
  • 举报
回复
直接memset(.....)
sanhu871123 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 woweiwokuang0000 的回复:]
char* aStr=new char[1];为什么就一个空间?
还有应该char* aNewStr=new char[aLength+1];
[/Quote]

如果给它分的空间大了的话乱码更多
sanhu871123 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 woweiwokuang0000 的回复:]
aNewStr[aLength-i]=aStr[i];
[/Quote]

这样的话就少了一个字符 我试了
shun_qizi_ran 2011-06-02
  • 打赏
  • 举报
回复
aNewStr[aLength-i]=aStr[i];
subdude 2011-06-02
  • 打赏
  • 举报
回复
回帖加10分
shun_qizi_ran 2011-06-02
  • 打赏
  • 举报
回复
char* aStr=new char[1];为什么就一个空间?
还有应该char* aNewStr=new char[aLength+1];
maoxing63570 2011-06-02
  • 打赏
  • 举报
回复
反转后要记得添加'\0'字符

65,186

社区成员

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

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