#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*
-------------------------
字符串倒序 ,
不改变原来的字符串
-------------------------
*/
char* reverse1(char *c)
{
int len = strlen(c) ;//得到字符串长度
char *dest = (char*)malloc( sizeof(char)*len+1 ) ;//malloc,在堆中开一个空间
char *p = dest ;
char *src = &c[len-1] ;
while(src>=c) //while(len--)
*p++ = *src-- ;
*p = '\0' ;
return dest ;
}
/*
-------------------------
字符串倒序 ,
改变原来的字符串
-------------------------
*/
void reverse2(char *c)
{
char temp ;
int len = strlen(c) ;//得到字符串长度,不包括最后的'\0',而且'\0'也不需要参加逆序
for(int i=0 ;i<(len/2) ;i++)
{
temp = c[i] ;
c[i] = c[(len-1)-i] ;
c[(len-1)-i] = temp ;
}
}
int main()
{
char c[] = "hello world!" ;
char *dest = NULL ;
printf("逆序前:%s\n",c) ;
dest = reverse1(c) ;
printf("逆序后:%s\n" ,dest);
free(dest) ;//要记得释放申请的堆空间
printf("逆序前:%s\n",c) ;
reverse2(c) ;
printf("逆序后:%s\n",c) ;
}
字符串倒序
最新推荐文章于 2024-05-06 18:06:04 发布