65,210
社区成员
发帖
与我相关
我的任务
分享void reverse(const char *s1, char *s2)
{
if(*s1 != '\0')
reverse(++s1, s2);
if(*s1 == '\0')
{
*s2++ = *--s1;
*s2 = '\0';
}
else
{ while(*s2 != '\0') ++s2;
*s2++ = *--s1, *s2 = '\0';
}
}
void reverse(const char *s1, char *s2)
{
*s2 = 0;
while (*s1 != '\n') ++s1, ++(*s2); // 用s2的第一个字节来记录s1的元素个数。
*(s2 + 1) = *s2;
while(*(s2 + 1) != 0)
{
*s2++ = *--s1;
*(s2 + 1) = *s2 - 1;
}
}
我觉得ls都忽略了一点,假如说
const char *s1, char *s2
这里的s2指向的内存的数据就有你所设定的限定符,咋办?
假如s2指向的内存有'\0','\1'咋办??
#include "stdafx.h"
#include <iostream>
using namespace std;
void reverse(const char *s1, char *s2)
{
*s2 = '\0';
s2 = s2 + 1;
while (*s1 !='\0')
{
s1++;
*s2 = '1';
s2++;
}
*s2 = '\0';
s2 = s2-1;
while ( *(s2-1) != '\0')
{
s2--;
}
while(*(s2+1) != '\0')
{
*s2 = *s1;
s1--;
s2++;
}
while (*(s2-1)!='\0')
{
s2--;
}
cout << s2;
cout << endl;
}
int main()
{
const char* s1 = "12345678";
char *s2 = new char[10];
reverse(s1, s2);
return 0;
}
void reverse(const char *s1, char *s2)
{
*s2++ = 0;
do { *s2++ = *s1++; }while( *s1 );
--s1; *--s2 = 0;
do { --s2; }while( *s2 );
do { *s2++ = *s1--; }while( *s2 );
}
void my_reverse(const char *s1, char *s2 )
{
*s2=*s1;
while (*s1!='\0')
{
++s1;
}
--s1;
while(*s1!=*s2)
{
*(s2+1)=*s2;
*s2=*s1;
--s1;
++s2;
}
++s2;
*s2='\0';
}
int main()
{
char *s1=new char[10];
char *s2=new char[10];
char *p=s1;
char *q=s2;
strcpy(s1,"123456789");
while (*p!='\0')
{ cout<<*p; p++;}
my_reverse(p,q);
while (*q!='\0')
{ cout<<*q; q++;}
system("pause");
}