/*************************************************************************
> File Name: rvs.c
> Author: perrynzhou
> Mail: 715169549@qq.com
> Created Time: Wed 21 Sep 2016 12:58:48 AM HKT
************************************************************************/
#include <stdio.h>
#include <string.h>
static char *exchange(char *src,char *dst)
{
char tmp;
char *psrc = src;
while(src != NULL && dst != NULL && src <dst) {
tmp = *src;
*src = *dst;
*dst = tmp;
src++;
dst--;
}
return psrc;
}
char *reverse(char *src,int n)
{
if(src == NULL || n <=0){
return;
}
int len = strlen(src);
exchange(src,src+(n-1));
exchange(src+n,src+(len-1));
exchange(src,src+(len-1));
return src;
}
int main(void)
{
char buf[] = "abcdefghijk";
int i=1;
int len = strlen(buf);
for(;i<len;i++)
{
char tmp[32] = {'\0'};
strncpy(tmp,buf,len);
fprintf(stdout,"......result =%s\n",reverse(tmp,i));
}
return 0;
}
运行结果:
$ ./a.out
......result =bcdefghijka
......result =cdefghijkab
......result =defghijkabc
......result =efghijkabcd
......result =fghijkabcde
......result =ghijkabcdef
......result =hijkabcdefg
......result =ijkabcdefgh
......result =jkabcdefghi
......result =kabcdefghij