字符串倒序

#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) ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值