This code fragment reads text from standard input and breaks lines that are more than 20 column positions wide, similar to the
fold(1) utility:
wint_t ch;
int column, w;
column = 0;
while ((ch = getwchar()) != WEOF) {
w = wcwidth(ch);
if (w > 0 && column + w >= 20) {
putwchar(L'\n');
column = 0;
}
putwchar(ch);
if (ch == L'\n')
column = 0;
else if (w > 0)
column += w;
}