#include <stdio.h>
char *merge_spaces(char *str) {
char *saved_str, *pos;
saved_str = pos = str;
bool prev_was_ch = false;
while (*str) {
if (*str != ' ' || prev_was_ch) {
*pos++ = *str;
prev_was_ch = *str != ' ';
}
str++;
}
pos[-(!prev_was_ch && pos != saved_str)] = '\0';
return saved_str;
}
int main(void) {
char str[] = " hello world this is a test ";
printf("[%s]\n", merge_spaces(str));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjaGFyICptZXJnZV9zcGFjZXMoY2hhciAqc3RyKSB7CgljaGFyICpzYXZlZF9zdHIsICpwb3M7CglzYXZlZF9zdHIgPSBwb3MgPSBzdHI7Cglib29sIHByZXZfd2FzX2NoID0gZmFsc2U7Cgl3aGlsZSAoKnN0cikgewoJCWlmICgqc3RyICE9ICcgJyB8fCBwcmV2X3dhc19jaCkgewoJCQkqcG9zKysgPSAqc3RyOwoJCQlwcmV2X3dhc19jaCA9ICpzdHIgIT0gJyAnOwoJCX0KCQlzdHIrKzsKCX0KCXBvc1stKCFwcmV2X3dhc19jaCAmJiBwb3MgIT0gc2F2ZWRfc3RyKV0gPSAnXDAnOwoJcmV0dXJuIHNhdmVkX3N0cjsKfQoKaW50IG1haW4odm9pZCkgewoJY2hhciBzdHJbXSA9ICIgIGhlbGxvICAgd29ybGQgdGhpcyAgaXMgICAgICAgICAgYSB0ZXN0ICAiOwoJcHJpbnRmKCJbJXNdXG4iLCBtZXJnZV9zcGFjZXMoc3RyKSk7CglyZXR1cm4gMDsKfQo=