[C/C++笔面试]编程实现字符串中各单词的翻转

来源:互联网 发布:2009的淘宝店 编辑:程序博客网 时间:2024/06/04 01:27
/*********************************************************-  Copyright (C): 2016-  File name    : revstr.c-  Author       : - Zxn --  Date         : 2016年08月28日 星期日 10时35分39秒-  Description  : 编程实现字符串中各单词的翻转*  *******************************************************/#include <stdio.h>void swap(char *strone, char *strtwo){    *strone ^= *strtwo;    *strtwo ^= *strone;    *strone ^= *strtwo;}void revstr(char *str){    char *start = str;    char *end = str;    char *ptr = str;    //遍历查找字符串    while (*ptr++ != '\0')    {        //找到一个单词        if (*ptr == ' ' || *ptr == '\0')        {            //end指向单词尾部            end = ptr - 1;            //完成局部交换            while (start < end)            {                swap(&(*start++), &(*end--));            }            start = end = ptr + 1;        }    }    //I ma morf iahgnahS    //完成整体交换    start = str, end = ptr - 2;    while(start < end)    {        swap(&(*start++), &(*end--));    }    //Shanghai from am I}int main(){    char str[] = "I am from Shanghai";    printf("str = %s\n",str);    revstr(str);    printf("src = %s\n", str);    return 0;}

这里写图片描述

1 0
原创粉丝点击