Reverse String

pengpeng2025 2012-06-28 09:59:52
#include <iostream>
#include <cstring>
using namespace std;

void reverse(char* str);

int main()
{
char* str = "character";
reverse(str);

return 0;
}


void reverse(char* str)
{
char* pbegin = str;
unsigned len = strlen(str);
char* pend = pbegin + len - 1;
while(pbegin < pend)
{
char tem = *pbegin;
*pbegin++ = *pend;
*pend-- = tem;
}

}


一个简单的reverse string 程序居然异常,求解...
...全文
179 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengpeng2025 2012-07-02
  • 打赏
  • 举报
回复
恩,正解,接分
未注销 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
C/C++ code
#include <iostream>
#include <cstring>
using namespace std;

void reverse(char* str);

int main()
{
char* str = "character";
reverse(str);

return 0;
}


void reverse(char* str……
[/Quote]
+
赵4老师 2012-06-28
  • 打赏
  • 举报
回复
#pragma comment(linker,"/SECTION:.rdata,RW")
加上面这句让常量区可写
nice_cxf 2012-06-28
  • 打赏
  • 举报
回复
修改常量区自然不行
char* str = "character";
修改为
char str[64] = "character";
tixisong 2012-06-28
  • 打赏
  • 举报
回复
原来如此。。
彭家老三 2012-06-28
  • 打赏
  • 举报
回复
楼主,1楼的意思是char* str = "character";中定义的str指针,指向的内容是常量(注意是指向的内容是常量,str本身不是常量),所以这一句*pbegin++ = *pend;会出现异常。你改成char str[] = "character";应该就可以了。
machyang 2012-06-28
  • 打赏
  • 举报
回复
额,是我错了,上面一样的,要修改char* str 为char str[]的,下面那个改不改是一样的。
machyang 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

修改常量区自然不行
char* str = "character";
修改为
char str[64] = "character";
[/Quote]

是不是应该将
char* pbegin = str;
修改为
char pbegin[64];
memset(pbegin,0x00,sizeof(pbegin));
strncpy(pbegin,str,strlen(str)+1);

--我也不是很清楚,C++菜鸟求解

64,647

社区成员

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

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