简陋实现版本,不考虑复杂情况
input: hello my book
output: book my hello
input: hello my book
output: book my hello
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void reverse_chars(char *src, int start, int length) {
char *start_ptr = src + start;
for(unsigned int i = 0;i < length / 2; i++) {
char temp = *start_ptr;
*start_ptr = *(start_ptr + (length -1 - 2 * i));
*(start_ptr + (length -1 - 2 * i)) = temp;
start_ptr++;
}
}
int main() {
char origin_words[] = "hello my book";
int words_length = strlen(origin_words);
reverse_chars(origin_words, 0, words_length);
int last_index = 0;
for(unsigned i=0;i<=words_length;i++) {
if(*(origin_words + i) == ' ' || *(origin_words + i) == '\0') {
reverse_chars(origin_words, last_index, i - last_index);
last_index = i + 1;
}
}
printf("%s \n", origin_words);
}