#include #include #include char rune[8]; #define get(c) ((c = fgetc(stdin)) != EOF) #define utf8_multibyte(c) (c & 0x80) #define utf8_continued(c) ((c & 0xC0) == 0x80) int main(void) { int c; unsigned i; while (get(c)) { i = 0; rune[i++] = c; if (utf8_multibyte(c)) { while (get(c) && utf8_continued(c)) { rune[i++] = c; assert(i < sizeof(rune)); } ungetc(c, stdin); } rune[i] = '\0'; printf("rune: %s\n", rune); } return 0; }