逆序输出字符串

zero_226 2010-06-04 07:20:20
void ReverseString(const char* str){
int length = strlen(str) + 1;
char* desc =(char*)malloc(length*sizeof(char));
memset(desc, 0, length);
desc += length;
while(*str != '\0'){
*desc-- = *str++;
}
cout << desc << endl;
free(desc);
}

这是我写的逆序输出字符串函数,实现不了,麻烦大家帮忙看下错误在哪里,不胜感激!
...全文
158 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yi_xingzhe 2010-06-06
  • 打赏
  • 举报
回复
如果想实现任意字符的逆序,建议使用栈
zero_226 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wtq493841534 的回复:]

没想到LZ居然喜欢看死神
[/Quote]
我还喜欢火影,还有水果篮子,水果篮子真的不错
测试昵称666 2010-06-04
  • 打赏
  • 举报
回复
没想到LZ居然喜欢看死神
ithiker 2010-06-04
  • 打赏
  • 举报
回复
void ReverseString(const char* str){
int length = strlen(str) + 1;
char* desc =(char*)malloc(length*sizeof(char));
memset(desc, 0, length);
desc += length-2;//mark,因为数组下标都是从0开始的,故-2
while(*str != '\0'){
*desc-- = *str++;
}
desc++;//mark,重置为首地址
cout << desc << endl;
free(desc);
}

starcat 2010-06-04
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;

void ReverseString(const char* str){
int length = strlen(str) + 1;
char* desc =(char*)malloc(length*sizeof(char));
char *p = desc;
memset(desc, 0, length);
desc += length-1;
while(*str != '\0'){
*desc-- = *str++;
}
++desc;
string s(desc);
cout << s << endl;
free(p);
//free(desc);
}

int main() {
char a[] = "this is a test.";
ReverseString(a);
return 0;
}
不要问我为什么直接释放desc出错
我也不知道
测试昵称666 2010-06-04
  • 打赏
  • 举报
回复


#include <iostream>
using namespace std;

void ReverseString(const char* str)
{

int length = strlen(str);
char* desc =(char*)malloc((length+1)*sizeof(char));
memset(desc, 0, (length+1)*sizeof(char));
desc += length-1; //这个地方减一
while(*str != '\0')
{
*desc-- = *str++;
}
desc += 1;
desc[length] = 0; //可有可无
cout << desc << endl;
free(desc);
}

int main()
{
char *str = "abcd";
ReverseString(str);
}



C++奋斗乐园|算法论坛|ACM论坛:
网站:www.cpply.com(欢迎投稿)
具体见:http://www.cppleyuan.com/redirect.php?tid=362&goto=lastpost#lastpost

论坛:www.cppleyuan.com

群:19333724, 17314377, 23829384
liutengfeigo 2010-06-04
  • 打赏
  • 举报
回复
void ReverseString(const char* str){
int length = strlen(str) + 1;
char* desc =(char*)malloc(length*sizeof(char));
memset(desc, 0, length);
desc += length;
while(*str != '\0'){
*(--desc) = *str++;
}
cout << desc << endl;
free(desc);
}
pengzhixi 2010-06-04
  • 打赏
  • 举报
回复
LS的也可以
liutengfeigo 2010-06-04
  • 打赏
  • 举报
回复
void ReverseString(const char* str){
int length = strlen(str) + 1;
char* desc =(char*)malloc(length*sizeof(char));
memset(desc, 0, length);
desc += length;
while(*str != '\0'){
*(--desc) = *(str++);
}
cout << desc << endl;
free(desc);
}
pengzhixi 2010-06-04
  • 打赏
  • 举报
回复
desc += length-1;

65,208

社区成员

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

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