C語言實現字串翻轉
阿新 • • 發佈:2019-02-20
題目描述:
有一個字元陣列的內容為:”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;
}
執行結果: