c语言编程题之字符串逆转。

一、导读:

将一个字符串逆序输出。

二、算法思想:

方案一:借用两个指针(一个头指针,一个尾指针),一个中间变量,在移动两个指针过程中不断交换两个指针得值。

方案二:新建一个长度一样的字符串,从原串最后一位向前复制到新串中,直接将第n-i-1位(n为串长)复制到新串第i位;

三、算法实例:

#include <stdio.h>
#include <stdlib.h>

char* reverse(char* src)
{
    if (NULL == src) {
        return NULL;
    }
    
    register_t tmp;
    unsigned long s_len = strlen(src);
    char *s = (char* ) src;
    char *e = (char* ) (s + (s_len-1));
    
    while (s < e) {
        tmp = *s;
        *s = *e;
        *e = tmp;
        ++s;
        --e;
    }
    
    return src;
}

char* reverse_0(char *dest,const char* src)
{
    if (NULL == dest && NULL == src) {
        return NULL;
    }
    
    int i = 0;
    unsigned long len = strlen(src);
    
    //串长为len,那src最后一个字符为src[len -1];dest[len]必须放'\0',
    //所以dest的长度必须满足>=len+1;
    while (i<len) {

        dest[i] = src[len-i-1];
        ++i;
    }
    dest[len] = '\0';
    
    return dest;
}

int main(int argc, const char * argv[])
{

    const char ss[30] = "this";
    
    char* ptr =(char*) malloc(30);
    
    strcpy(ptr,ss);
    
    printf("ptr[0] = [%s]\n",ptr);
    
    reverse(ptr);
    
    printf("ptr[1] = [%s]\n",ptr);
    
    memset(ptr,0,30);
    reverse_0(ptr, ss);
    printf("ptr[2] = [%s]\n",ptr);
    
    return 0;
}



四、结果:

ptr[0] = [this]

ptr[1] = [siht]

ptr[2] = [siht]



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值