1. 程式人生 > >C語言實現字串翻轉

C語言實現字串翻轉

題目描述:
        有一個字元陣列的內容為:”student a am i”,請你將陣列的內容改為”i am a student”. 要求:
        不能使用庫函式。只能開闢有限個空間(空間個數和字串的長度無關)。

解題思路:
        1、先將這個字串進行翻轉,翻轉後得到“i ma a tneduts”;
        2、對每一個單詞進行翻轉;

程式碼實現:

#include <stdio.h>
#include <string.h>

void reverse(char* p, int left, int right)
{
    char
tmp = 0; while (left < right) { tmp = *(p + left); *(p + left) = *(p + right); *(p + right) = tmp; left++; right--; } } int main() { char arr[] = "student a am i"; int left = 0; int src = strlen(arr) - 1; int right = 0; char* tmp = arr; reverse(arr, left, src);//先對字串進行翻轉
while (*tmp != '\0') { left = right; while (*tmp != ' ' && *tmp != '\0') { right++; tmp++; } reverse(arr, left, right - 1);//對每一個字串進行翻轉 if (*tmp != '\0') { tmp++; } right++; left++; } printf
("%s\n", arr); return 0; }

執行結果:
這裡寫圖片描述