Given a sentence like this "I am a good boy", the in place reverse would be "boy good a am I".
#include <stdio.h>
#include <stdlib.h>
void reverseWordInStr(char*);
void reverseStr(char*, char*);
int main()
{
char arr[] = "the world will go on forever";
reverseWordInStr(arr);
printf("%s\n",arr);
return 0;
}
void reverseWordInStr(char* str){
char* p = str;
while(*p != '\0')
p++;
//reverse the whole sentence
reverseStr(str,--p);
//reverse each word
p = str;
char* wStart = p;
while(*p != '\0'){
p++;
if(*p == '\0' || *p == ' '){
reverseStr(wStart, p - 1);
wStart = p + 1;
}
}
}
void reverseStr(char* start, char* end){
char tmp;
while(start < end){
tmp = *end;
*end-- = *start;
*start++ = tmp;
}
}