天天看点

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;

}

继续阅读