#include <stdio.h>
{
int l = 0;
while (*s++) ++l;
return l;
}
void reverse(char* str)
{
int i
= 0, j
= strlen(str
) - 1;
for(; i < j; ++i, --j)
{
str[i] ^= str[j];
str[j] ^= str[i];
str[i] ^= str[j];
}
}
void nulltok(char* str, char tok, int* parts)
{
*parts = 1;
for (; i < len; ++i)
{
if (str[i] == tok)
{
str[i] = '\0';
++(*parts);
}
}
}
char* reverse_sentence(char* str)
{
char* tmp = str;
reverse(str);
int i
= 0, parts
= 0, len
= strlen(str
); nulltok(str, 0x20, &parts);
while(parts--)
{
reverse(str);
}
for(; i < len; ++i)
if (tmp[i] == '\0')
tmp[i] = 0x20;
return tmp;
}
int main(void)
{
char str[] = "dogs like cats";
printf("%s", reverse_sentence
(str
));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgc3RybGVuKGNvbnN0IGNoYXIqIHMpCnsKCWludCBsID0gMDsKCXdoaWxlICgqcysrKSArK2w7CglyZXR1cm4gbDsKfQoKCnZvaWQgcmV2ZXJzZShjaGFyKiBzdHIpCnsKCWludCBpID0gMCwgaiA9IHN0cmxlbihzdHIpIC0gMTsKCQoJZm9yKDsgaSA8IGo7ICsraSwgLS1qKQogICAgewoJICAgc3RyW2ldIF49IHN0cltqXTsKCSAgIHN0cltqXSBePSBzdHJbaV07CgkgICBzdHJbaV0gXj0gc3RyW2pdOwogICAgfQp9Cgp2b2lkIG51bGx0b2soY2hhciogc3RyLCBjaGFyIHRvaywgaW50KiBwYXJ0cykKewoJaW50IGkgPSAwLCBsZW4gPSBzdHJsZW4oc3RyKTsKCSpwYXJ0cyA9IDE7CgkKCWZvciAoOyBpIDwgbGVuOyArK2kpCgl7CgkJaWYgKHN0cltpXSA9PSB0b2spCgkJewoJCQlzdHJbaV0gPSAnXDAnOwoJCQkrKygqcGFydHMpOwoJCX0KCX0KfQoKY2hhciogcmV2ZXJzZV9zZW50ZW5jZShjaGFyKiBzdHIpCnsKCWNoYXIqIHRtcCA9IHN0cjsKCXJldmVyc2Uoc3RyKTsKCQoJaW50IGkgPSAwLCBwYXJ0cyA9IDAsIGxlbiA9IHN0cmxlbihzdHIpOwoJbnVsbHRvayhzdHIsIDB4MjAsICZwYXJ0cyk7CgkKCXdoaWxlKHBhcnRzLS0pCgl7CgkJcmV2ZXJzZShzdHIpOwoJCXN0ciArPSBzdHJsZW4oc3RyKSArIDE7Cgl9CgkKCWZvcig7IGkgPCBsZW47ICsraSkKCSAgICBpZiAodG1wW2ldID09ICdcMCcpCgkgICAgICAgIHRtcFtpXSA9IDB4MjA7CgkKCXJldHVybiB0bXA7Cn0KCgppbnQgbWFpbih2b2lkKQp7CgljaGFyIHN0cltdID0gImRvZ3MgbGlrZSBjYXRzIjsKCXByaW50ZigiJXMiLCByZXZlcnNlX3NlbnRlbmNlKHN0cikpOwoJCglyZXR1cm4gMDsKfQo=