/*编一个程序,将输入的一个字符串按反序存放,
要求
在主函数中输入字符串 并输出反序后的字符串,
在被调用函数中完成反序存放。
例如:输入字符串“a b c d e f g”,输出“gfedcba”。
指针 p 指针 q
*/
/*编一个程序,将输入的一个字符串按反序存放,
要求
在主函数中输入字符串 并输出反序后的字符串,
在被调用函数中完成反序存放。
例如:输入字符串“a b c d e f g”,输出“gfedcba”。
p q
*/
#include <stdio.h>
#include <string.h>
char *Fanxu(char *p,int len);
int main(int argc, char const *argv[])
{
int n;
printf("请输入字符串长度:\n");
scanf("%d",&n);
char arr[n];
printf("请输入字符串:\n");
scanf("%s",arr);
char *p = arr;
int len = strlen(arr);
if(len > n)
{
printf("你输入的字符串过多:\n");
}
else
{
//调用函数
p = Fanxu(p,len);
}
printf("输出:%s\n",p);
/*
for(p;*p != '\0';p++)
{
printf("%c",p);
}*/
return 0;
}
char * Fanxu(char *p,int len)
{
char temp;
char *t = p;//备份p;
if(len % 2 == 0)//偶数数个字符
{
for(char *q = p + len - 1;*p != '\0';p++,q--)
{
if(*(p + 1) == *q)
{
break;
}
temp = *p;
*p = *q;
*q = temp;
}
}
else
{
for(char *q = p + len - 1;*p != '\0';p++,q--)
{
if(*(p + 1) == *(q -1))
{
break;
}
temp = *p;
*p = *q;
*q = temp;
}
}
p = t;
return p;
}