各位大侠帮忙看看!有分啊。

wangbinru 2003-10-23 05:51:34
char* mystrrev(char* Denstr,const char* Sourcestr)
{
int count = 0;
while(*Sourcestr++)
count++;
const char* p = &Sourcestr[count];
while(*Denstr=*p)
{
++Denstr;
--p;
count--;
if(!count)
break;
}
return Denstr;
}
这个函数原想实现将一个字符串翻转,如"asdf"翻转后为"fdsa",但为什么就是
不行啊?有实现这一功能的简便方法(不用标准库)吗?
...全文
28 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2003-10-25
  • 打赏
  • 举报
回复
const char * ReverseString(char * strDest, const char * strSrc)
{
int len = 0;
int i = 0;
len = strlen(strSrc);
for (;strSrc[i];i++)
strDest[len - i - 1] = strSrc[i];
strDest[len] = 0;
return strDest;
}
wangbinru 2003-10-25
  • 打赏
  • 举报
回复
楼上的reverse是标准库里的吗?我是说不用标准库来实现。
ch_etang 2003-10-24
  • 打赏
  • 举报
回复
#include <algotithm>

char pStr[10];
reverse( pStr, pStr + 10 );
即可,若只是指针,需要知pStr指向内存的长度.
wangbinru 2003-10-23
  • 打赏
  • 举报
回复
char* mystrrev(char* Denstr,const char* Sourcestr)
{
const char* p = Sourcestr;
while(*++p);
while(*Denstr++=*--p)
if(p<Sourcestr)
break;
*Denstr = '\0';
return Denstr;
}
我改进了一下,不知道还有没有更好的、更具效率的方法。希望大家多多指导啊。
zlqian 2003-10-23
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

const char* mystrrev(char* Denstr,const char* const Sourcestr)
{
int count = 0;
for(count=0;*(Sourcestr+count);count++);
Denstr = new char[count];
const char* p = &Sourcestr[count-1];
Denstr[--count]='\0';
for(int i=0;count>=0;count--,i++) *(Denstr+i) = *(p-i);
return Denstr;
}

int main()
{
char *test="abcd";
char *result;
cout<<mystrrev(result,test);
return 1;
}
darcymei 2003-10-23
  • 打赏
  • 举报
回复
char* mystrrev(char* Denstr,const char* Sourcestr)
{
int count = 0;
while(*Sourcestr++)
count++;
//const char* p = &Sourcestr[count];
const char* p = Sourcestr-2;//Sourcestr已成为'\0'后一位
while(*Denstr=*p)
{
++Denstr;
--p;
count--;
if(!count)
break;
}
*Denstr='\0'//加上结束位
return Denstr;

}

这种程序应该多调试下
结构方面也有很多可以改善
gambolgs 2003-10-23
  • 打赏
  • 举报
回复
char * mystrrev(char* Denstr,const char* Sourcestr)
{
const char * p1 = Sourcestr;

while (*++p1)
{
}

char * p2 = Denstr;

while (p1 > Sourcestr)
*p2 ++ = *--p1;

*p2 = 0;
return Denstr;
}

24,853

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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