语句逆序 c实现, I am a teacher => I ma a rehcaet 或I am a teacher => teacher a am I

实现功能 I am a teacher => I ma a rehcaet

               或者:I am a teacher => teacher a am I

                或者:I am a teacher => rehcaet a ma I

/*

word_reversal 函数实现:整体逆序

例如:I am a teacher => rehcaet a ma I

        teacher => rehcaet

*/

int word_reversal(char *ptr, int plen)
{
    if(!ptr || plen <= 0)
        return -1;
    
    char *start = ptr;
    char *end = ptr + plen - 1;
    printf("\n start:%s,\n end:%s, plen:%d \n", start, end, plen);
    char pr;
    while(end > start) {
        //printf("\n *start:%c,*end:%c\n", *start, *end);
        pr = *start;
        *start++ = *end;
        *end-- = pr;
    }
    
    printf("\n====ptr:%s\n", ptr);
    return 0;
}

int sentence_reversal(char *str)
{
    if(!str)
        return -1;
    printf("\n-0-str:%s\n", str); 

    //int tlen = strlen(str);
    //word_reversal(str, tlen);
    //printf("\n----str:%s\n", str);   //打开这三句实现: I am a teacher => teacher a am I
    char *eword = str;
    char *startw = eword;
    int   wlen = 0;
    while(*eword != '\0')
    {
        startw = eword;
        wlen = 0;
        //printf("\n==eword:%s,startw:%s,wlen:%d.\n", eword,startw,wlen);
        while (*eword != ' ' && *eword  != '\0'){ //  || *str  != '\0'
            eword++;
            wlen++;
        }
        //printf("\n--eword:%s,startw:%s,wlen:%d.\n", eword,startw,wlen);
        word_reversal(startw, wlen);
        while(*eword == ' ')
            ++eword;
        
    }
    printf("\n--str:%s\n", str);
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值