#include <stdio.h>
char *strtrim(const char *input) {
while(*input==' ') {
input++;
}
const char *start=input;
const char *end=input;
while(*input) {
if(*input!=' ') {
end=input+1;
}
input++;
}
size_t len=end-start;
if(result) {
result[len]=0;
}
return result;
}
void test(const char *input) {
char *work=strtrim(input);
printf("*%s* -> *%s*\n",input
,work
?work
:"fail"); }
int main(void) {
test("test");
test(" test");
test(" test");
test("test ");
test("test ");
test(" te st ");
test("t");
test(" t");
test("t ");
test(" ");
test("");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjaGFyICpzdHJ0cmltKGNvbnN0IGNoYXIgKmlucHV0KSB7Cgl3aGlsZSgqaW5wdXQ9PScgJykgewoJCWlucHV0Kys7Cgl9Cgljb25zdCBjaGFyICpzdGFydD1pbnB1dDsKCWNvbnN0IGNoYXIgKmVuZD1pbnB1dDsKCXdoaWxlKCppbnB1dCkgewoJCWlmKCppbnB1dCE9JyAnKSB7CgkJCWVuZD1pbnB1dCsxOwoJCX0KCQlpbnB1dCsrOwoJfQoJc2l6ZV90IGxlbj1lbmQtc3RhcnQ7CgljaGFyICpyZXN1bHQ9bWFsbG9jKGxlbisxKTsKCWlmKHJlc3VsdCkgewoJCXJlc3VsdFtsZW5dPTA7CgkJbWVtY3B5KHJlc3VsdCxzdGFydCxsZW4pOwoJfQoJcmV0dXJuIHJlc3VsdDsKfQoKdm9pZCB0ZXN0KGNvbnN0IGNoYXIgKmlucHV0KSB7CgljaGFyICp3b3JrPXN0cnRyaW0oaW5wdXQpOwoJcHJpbnRmKCIqJXMqIC0+IColcypcbiIsaW5wdXQsd29yaz93b3JrOiJmYWlsIik7CglmcmVlKHdvcmspOwp9CgppbnQgbWFpbih2b2lkKSB7Cgl0ZXN0KCJ0ZXN0Iik7Cgl0ZXN0KCIgdGVzdCIpOwoJdGVzdCgiICB0ZXN0Iik7Cgl0ZXN0KCJ0ZXN0ICIpOwoJdGVzdCgidGVzdCAgIik7Cgl0ZXN0KCIgIHRlIHN0ICAiKTsKCXRlc3QoInQiKTsKCXRlc3QoIiB0Iik7Cgl0ZXN0KCJ0ICIpOwoJdGVzdCgiICAiKTsKCXRlc3QoIiIpOwoJcmV0dXJuIDA7Cn0K