#include #include struct res { uint64_t nl; uint64_t tb; uint64_t bl; }; struct res nr(void) { struct res r = { .nl = 0, .tb = 0, .bl = 0. }; return r; } static struct res _loop(struct res res) { int c = getchar(); if (c == EOF) { return res; } if (c == ' ') { res = (struct res){ .bl = res.bl+1, .nl = res.nl, .tb = res.tb, }; } else if (c == '\n') { res.nl++; } else if (c == '\t') { res.tb++; } //__attribute__((musttail)) return _loop(res); } int main(void) { struct res r = _loop(nr()); printf("nl=%ld tb=%ld bl=%ld\n", r.nl, r.tb, r.bl); return 0; }