天天看點

C語言字元串“This is hello world”的反轉

程式設計思想:利用指針先把整個字元串反轉,之後再将得到的字元串中每個單詞反轉,代碼如下:

#include <stdio.h>

#include <string.h>

//反轉函數,将p指向字元串的頭,q指向字元串的尾的字元串中的每個字元進行反轉 

int reversal(char *p, char *q)

{

    char tmp;

    if(p == NULL || q == NULL)

        return -1;

    while((p != q) && (p < q))

    {

        tmp = *p;

        *p = *q;

        *q = tmp;

        p++;

        q--;

    }

    return 0;

}

int main(void)

{

    char str[] = "This is hello world";

    char *p = str,*q = str;

    char *pstr_end;

    pstr_end = str + strlen(str) - 1;

    //1,全部反轉一次 

    reversal(p, pstr_end);

    //2,每個單詞部分反轉 

    for(;q != pstr_end; q++)

    {

        if(*q != ' ')

        {

            continue;

        }

        else

        {

            q = q-1;

            reversal(p, q);

            q = q + 2;

            p = q ;

        }

    }

    //結尾單詞反轉 

    if(q == pstr_end)

    {

        reversal(p, q);

    }    

    printf("%s",str);

    return 0;

}

繼續閱讀