@
yanqiyu 洗了个澡发现边界情况写错了,修了(狗头)
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
void print_word(const char *str, size_t start, size_t stop) {
for (size_t i = start; i <= stop; i++) {
// there is sth like %.*s but for simplicity ...
printf("%c", str[i]);
}
}
int main(int argc, char **argv) {
char test_str[] = " f test sentence here bla bla ";
size_t len = strlen(test_str) - 1;
size_t start = len;
size_t stop = len;
// flag just for proper trailing space ...
bool is_first_wold = true;
for (int i = len; i >= 0; i--) {
if (i != 0 && test_str[i] == ' ' && (test_str[i - 1] != ' ')) {
stop = i - 1;
} else if (test_str[i] != ' ' && (i == 0 || test_str[i - 1] == ' ')) {
start = i;
if (is_first_wold) {
is_first_wold = false;
} else {
printf(" ");
}
print_word(test_str, start, stop);
}
}
return 0;
}