C实现字符串反转,例如:abcdefg反转成gfedcba
目的
查阅字符串反转的相关帖子,发现实现过程较为繁琐,不易理解。
过程分析
用指针将内容交换
*str为a,*(str+6)为g,将它俩交换;
*(str+1)为b,*(str+5)为f,将它俩交换;
…
以此类推,规律为i从1开始,
*(str+i-1)与*(str+strlen(str)-i)交换
源码
#include <stdio.h>
void fun(char *str)
{
if(str==NULL)
return;
char a;
char *temp=&a;//防止野指针
int lenth=strlen(str);
for(int i=1;i<=lenth/2;i++)
{
//括号内为通过指针交换所指向内容,类似两个数的交换
*temp=*(str+i-1);
*(str+i-1)=*(str+lenth-i);
*(str+lenth-i)=*temp;
}
}
int main (void)
{
char ch[]="abcdefg";
printf("原字符串 :%s\n",ch);
fun(ch);
printf("反转后字符串:%s ",ch);
return 0;
}