here is reverse string :
Write code to reverse a string such that the words are reversed as in "We apologise for the inconvenience" becomes "inconvenience the for apologise We".
sound like simple ? not really! I think the answer not only correct but also neat and perfect.
here is my version 1:
if you have better answer, please post here.
first, i have basic idear:
The solution is to do it in two passes. In the first pass the whole string is reversed and in the second each word is reversed again.
After reversing the whole string: "ecneinevnocni eht rof esigolopa eW"
Reversing word at a time: "inconvenience eht rof esigolopa eW"
...
Finally: "inconvenience the for apologise We"
void ReverseString(char *p1,*p2){
//reverse the string between p1 and p2
char temp;
while(p1<p2){
temp=*p1;
*p1++=*p2;
*p2--=temp;
}//while
}//while
//below function will complete whole function
vod CompleteReverse(char *str){
//check if it's null point then return;
if(!str) return;
if(strlen(str)>0)
{
//reverse whole string
ReverseString(str, str+strlen(str)-1);
char *c1 = str, *c2 = str+1;
do{
//find word boundary
for(;c2!=' ' && *c2; c2++);
//reverse
ReverseString(c1,c2-1);
if(!*c2) break;
//done
c1=++c2;
}while(*c2)
return;
}