#include <stdio.h>
#include <string.h>
void reverse(char*, int);
int main(int argc, char **argv)
{
char st[]= "hello world";
int i=0,j=0;
reverse(st,len-1); // Reverse the entire string. hello world => dlrow olleh
while(st[j]){ //Loop till the string ends
if (*(st+j)==' ') { //if you hit a blank space
reverse(st+i,j-i-1); // reverse the string starting at position i till position j
i=++j; //new i & j are 1 position to the right of old j
}
else {
j++; //if a chacacter is found, move to next position
}
}
reverse(st+i,j-i-1); // reverse the last word of the string
return 0;
}
void reverse(char *s, int n)
{
char *end = s+n; //end is a pointer to an address which is n addresses from the starting address
char tmp;
while (end>s) //perform swap
{
tmp = *end;
*end = *s;
*s = tmp;
end--;
s++;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnZvaWQgcmV2ZXJzZShjaGFyKiwgaW50KTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKewoJY2hhciBzdFtdPSAiaGVsbG8gd29ybGQiOwoJaW50IGxlbiA9IHN0cmxlbihzdCk7CglpbnQgaT0wLGo9MDsKCQoJcmV2ZXJzZShzdCxsZW4tMSk7IC8vIFJldmVyc2UgdGhlIGVudGlyZSBzdHJpbmcuIGhlbGxvIHdvcmxkID0+IGRscm93IG9sbGVoCgkKCXdoaWxlKHN0W2pdKXsgLy9Mb29wIHRpbGwgdGhlIHN0cmluZyBlbmRzCgkJaWYgKCooc3Qraik9PScgJykgeyAvL2lmIHlvdSBoaXQgYSBibGFuayBzcGFjZSAKCQkJcmV2ZXJzZShzdCtpLGotaS0xKTsgLy8gcmV2ZXJzZSB0aGUgc3RyaW5nIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIGkgdGlsbCBwb3NpdGlvbiBqCgkJCWk9KytqOyAvL25ldyBpICYgaiBhcmUgMSBwb3NpdGlvbiB0byB0aGUgcmlnaHQgb2Ygb2xkIGoKCQl9CgkJZWxzZSB7CgkJCWorKzsgLy9pZiBhIGNoYWNhY3RlciBpcyBmb3VuZCwgbW92ZSB0byBuZXh0IHBvc2l0aW9uCgkJfQkJCgl9CQkKCXJldmVyc2Uoc3QraSxqLWktMSk7IC8vIHJldmVyc2UgdGhlIGxhc3Qgd29yZCBvZiB0aGUgc3RyaW5nCgkKCXByaW50ZigiJXMiLHN0KTsKCXJldHVybiAwOwp9Cgp2b2lkIHJldmVyc2UoY2hhciAqcywgaW50IG4pCnsKCWNoYXIgKmVuZCA9IHMrbjsgLy9lbmQgaXMgYSBwb2ludGVyIHRvIGFuIGFkZHJlc3Mgd2hpY2ggaXMgbiBhZGRyZXNzZXMgZnJvbSB0aGUgc3RhcnRpbmcgYWRkcmVzcwoJY2hhciB0bXA7Cgl3aGlsZSAoZW5kPnMpICAvL3BlcmZvcm0gc3dhcAoJewoJCXRtcCA9ICplbmQ7CgkJKmVuZCA9ICpzOwoJCSpzID0gdG1wOwoJCWVuZC0tOwoJCXMrKzsKCX0KfQ==