1. 程式人生 > >[C/C++筆面試]程式設計實現字串中各單詞的翻轉

[C/C++筆面試]程式設計實現字串中各單詞的翻轉

/*********************************************************
-  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; }

這裡寫圖片描述