有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
要求:
不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
/* 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". */ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> /* 解题思路 * student a am i //单词逆序 * tneduts a ma i //整体逆序 * i am a student */ void reverse_str(char * left, char * right) { char tmp = 0; while (left <= right) { tmp = *(left); *(left) = *(right); *(right) = tmp; left++; right--; } } void reverse(char *arr, int len) { char *start = arr; char *end = arr; reverse_str(arr, arr + len - 1); while (*end != '\0') { while (*end != ' ' && *end != '\0') end++; reverse_str(start, end - 1); if (*end != '\0') start = ++end; } } int main() { char arr[] = "student a am i"; int len = strlen(arr); reverse(arr, len); printf("%s\n", arr); system("pause"); return 0; }
字符数组逆序(三步旋转法)
最新推荐文章于 2023-02-02 19:19:17 发布