//字符串逆序
/*
Author :blain
Data :2015/08/25
*/
#include <stdio.h>
#include <malloc.h>
//新創建等長度的數組,將原數組從末字符一次放入新數組
char *Reverse_String(char *src)
{
if(NULL==src)
return src;
char *p = src;
int size = 0;
while(*++p)
{
size++;
}
p--;
char * store=(char*)malloc((size+1)*sizeof(char));
char * q = store;
while(p>=src)
{
*q++= *p--;
}
*q='\0';
return store;
}
//原地交換字符,使用了第三個變量
char *swap_reverse(char *s)
{
if(NULL==s)
return s;
char *left = s;
char *right = s;
char temp = NULL;
while(*right)
{
right++;
}
right--;
while(right>left)
{
temp = *right;
*right-- = *left;
*left++ = temp;
}
return s;
}
//原地交換字符,不使用第三個變量
char *reverse(char *s)
{
if(NULL==s)
return s;
char *left = s;
char *right = s;
while(*right)
{
right++;
}
right--;
while(right>left)
{
*left = *left^*right;
*right = *left^*right;
*left = *left++^*right--;
}
return s;
}
void ReversePrint(char *s)
{
if(*(s+1)!='\0')
ReversePrint(s+1);
printf("%c\n",*s);
}
int main(void)
{
char a[] = "hello";
//char *dec = Reverse_String(src);
//printf("%s\n",dec);
//char *dec1 = swap_reverse(a);
//printf("%s\n",dec1);
//char *dec2=reverse(a);
//printf("%s\n",dec2);
ReversePrint(a);
return 0;
}