#include <stdio.h>
#include <memory.h>
#define MAXLINE 1000
int xgetline(char line[], int maxline);
void copy(char to[], char from[]);
void reverse(char s[], int len);
int main(int argc, char **argv){
int c;
int i, len;
char line[MAXLINE];
while((len = xgetline(line, MAXLINE)) > 0){
for(i = len - 1; (line[i] == ' ' || line[i] == '\t' || line[i] == '\n'); i--);
line[++i] = '\n';
line[++i] = '\0';
//Теперь i - фактическая длина строки
reverse(line, i);
}
return 0;
}
int xgetline(char s[], int lim){
int c, i;
for(i
= 0; i
< lim
-1 && (c
=getchar()) != EOF
&& c
!= '\n'; i
++) s[i] = c;
if(c == '\n'){
s[i] = '\n';
i++;
}
s[i] = '\0';
return i;
}
void copy(char from[], char to[]){
int i;
i = 0;
while((to[i] = from[i]) != '\0')
i++;
}
void reverse(char s[], int len){
int i, mid;
char temp;
mid = len / 2;
for(i = 0; i < mid; i++){
temp = s[i];
s[i] = s[len - i - 1];
s[len - i - 1] = temp;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtZW1vcnkuaD4KCiNkZWZpbmUgTUFYTElORSAxMDAwCgppbnQgeGdldGxpbmUoY2hhciBsaW5lW10sIGludCBtYXhsaW5lKTsKdm9pZCBjb3B5KGNoYXIgdG9bXSwgY2hhciBmcm9tW10pOwp2b2lkIHJldmVyc2UoY2hhciBzW10sIGludCBsZW4pOwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KXsKCWludCBjOwogICAgaW50IGksIGxlbjsKICAgIGNoYXIgbGluZVtNQVhMSU5FXTsKICAgIHdoaWxlKChsZW4gPSB4Z2V0bGluZShsaW5lLCBNQVhMSU5FKSkgPiAwKXsKICAgIAlmb3IoaSA9IGxlbiAtIDE7IChsaW5lW2ldID09ICcgJyB8fCBsaW5lW2ldID09ICdcdCcgfHwgbGluZVtpXSA9PSAnXG4nKTsgaS0tKTsKICAgIAlsaW5lWysraV0gPSAnXG4nOwogICAgCWxpbmVbKytpXSA9ICdcMCc7CiAgICAJLy/QotC10L/QtdGA0YwgaSAtINGE0LDQutGC0LjRh9C10YHQutCw0Y8g0LTQu9C40L3QsCDRgdGC0YDQvtC60LgKICAgIAlyZXZlcnNlKGxpbmUsIGkpOwogICAgCXByaW50ZigiJXMiLCBsaW5lKTsKICAgIH0KICAgIAkKICAgIAoJcmV0dXJuIDA7Cn0KCmludCB4Z2V0bGluZShjaGFyIHNbXSwgaW50IGxpbSl7CglpbnQgYywgaTsKCQoJZm9yKGkgPSAwOyBpIDwgbGltLTEgJiYgKGM9Z2V0Y2hhcigpKSAhPSBFT0YgJiYgYyAhPSAnXG4nOyBpKyspCgkJc1tpXSA9IGM7CglpZihjID09ICdcbicpewoJCXNbaV0gPSAnXG4nOwoJCWkrKzsKCX0KCXNbaV0gPSAnXDAnOwoJcmV0dXJuIGk7Cn0KCnZvaWQgY29weShjaGFyIGZyb21bXSwgY2hhciB0b1tdKXsKCWludCBpOwoJCglpID0gMDsKCXdoaWxlKCh0b1tpXSA9IGZyb21baV0pICE9ICdcMCcpCgkJaSsrOwp9Cgp2b2lkIHJldmVyc2UoY2hhciBzW10sIGludCBsZW4pewoJaW50IGksIG1pZDsKCWNoYXIgdGVtcDsKCQoJbWlkID0gbGVuIC8gMjsKCWZvcihpID0gMDsgaSA8IG1pZDsgaSsrKXsKCQl0ZW1wID0gc1tpXTsKCQlzW2ldID0gc1tsZW4gLSBpIC0gMV07CgkJc1tsZW4gLSBpIC0gMV0gPSB0ZW1wOwoJfQp9