#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;
while(st[j]){ //Loop till end of the string
if ( st[j] == ' ') { //if you hit a blank space or the end of the string
reverse(&st[i], j - i - 1); // reverse the string starting at position i till position before the blank space i.e j-1
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);
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+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnZvaWQgcmV2ZXJzZShjaGFyKiwgaW50KTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKewogIGNoYXIgc3RbXT0gImhlbGxvIHdvcmxkIjsKICBpbnQgaT0wLCBqPTA7CgogIHdoaWxlKHN0W2pdKXsgLy9Mb29wIHRpbGwgZW5kIG9mIHRoZSBzdHJpbmcKICAgIGlmICggc3Rbal0gPT0gJyAnKSB7IC8vaWYgeW91IGhpdCBhIGJsYW5rIHNwYWNlIG9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZwogICAgICByZXZlcnNlKCZzdFtpXSwgaiAtIGkgLSAxKTsgLy8gcmV2ZXJzZSB0aGUgc3RyaW5nIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIGkgdGlsbCBwb3NpdGlvbiBiZWZvcmUgdGhlIGJsYW5rIHNwYWNlIGkuZSBqLTEKICAgICAgaSA9ICsrajsgLy9uZXcgaSAmIGogYXJlIDEgcG9zaXRpb24gdG8gdGhlIHJpZ2h0IG9mIG9sZCBqCiAgICB9CiAgICBlbHNlIHsKICAgICAgaisrOyAvL2lmIGEgY2hhY2FjdGVyIGlzIGZvdW5kLCBtb3ZlIHRvIG5leHQgcG9zaXRpb24KICAgIH0gICAgICAgICAgICAgICAKICB9CiAgcmV2ZXJzZSgmc3RbaV0sIGogLSBpIC0gMSk7CgoKICBwcmludGYoIiVzXG4iLHN0KTsKICByZXR1cm4gMDsKfQoKdm9pZCByZXZlcnNlKGNoYXIgKnMsIGludCBuKQp7CiAgY2hhciAqZW5kID0gcyArIG47IC8vZW5kIGlzIGEgcG9pbnRlciB0byBhbiBhZGRyZXNzIHdoaWNoIGlzIG4gYWRkcmVzc2VzIGZyb20gdGhlICAgIHN0YXJ0aW5nIGFkZHJlc3MKICBjaGFyIHRtcDsKCiAgd2hpbGUgKGVuZCA+IHMpICAvL3BlcmZvcm0gc3dhcAogIHsKICAgIHRtcCA9ICplbmQ7CiAgICAqZW5kID0gKnM7CiAgICAqcyA9IHRtcDsKICAgIGVuZC0tOwogICAgcysrOwogIH0KfQ==