周末有一个朋友问了一个笔试题目,当时还直播写了答案,但是总觉得写得不够好,现在把题目放出来。大家看看有没有什么更好的解法

题目

有一个字符串,如下,要求对字符串做反转后输出

//input  the sky is blue

//output blue is sky the

我的答案如下面的代码,我是直接定义成数组的来操作,如果定义成 char * str  的话,大家有没有什么思路呢?

#include "stdio.h"char input[] = {"the sky is blue"};//题目://input  the sky is blue//output blue is sky thevoid reverseWords(char* s, int n) {   char ch;
int i=0;
for (i=0; i<n/2; i++) {
ch = s[i];
s[i] = s[n-i-1];
s[n-i-1] = ch;
}}//eulb si yks ehtvoid reverseWords_by_space(char* s, int n) { int i = 0;
int len = 0;
for (i=0; i<n; i++) {
if (s[i] == ' ') {
reverseWords(s+i-len, len);
len = 0;
} else if (s[i] == '\0') {
reverseWords(s+i-len, len);
len = 0;
}
if (s[i] != ' ') {
++len;
}
}}int main(void) { printf("%s\n", input);
reverseWords(input,strlen(input));
reverseWords_by_space(input,sizeof(input));
printf("%s\n", input);
// 写完了,大家有不明白的评论下
return 0;}

这道字符串反转的题目,你能想到更好的方法吗?_c++