The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#include <stdio.h>
#include <stdlib.h>

main(argc, argv)
char **argv;
{
    register c;
    int xp;
    int width;

    if ( argc != 2 ) {
	fprintf(stderr, "usage: %s width\n", argv[0]);
	exit(1);
    }
    else if ( (width=atoi(argv[1])) < 1 ) {
	fprintf(stderr, "%s: please set width to > 0\n", argv[0]);
	exit(1);
    }


    for ( xp = 1; (c = getchar()) != EOF; xp++ ) {
	while ( c & 0xC0 ) {
	    /* assume that (1) the output device understands utf-8, and
	     *             (2) the only c & 0x80 input is utf-8.
	     */
	    do {
		if ( xp <= width )
		    putchar(c);
	    } while ( (c = getchar()) != EOF && (c & 0x80) && !(c & 0x40) );
	    ++xp;
	}
	if ( c == '\n' )
	    xp = 0;
	if ( xp <= width )
	    putchar(c);
    }
    exit(0);
}