>>243 >>249
今更だけどさらに便乗。
カラムを揃えてみたけど、サイズ膨れすぎ(;´Д`)

#include <stdio.h>

#define NBSP    "&nbsp;"
#define AMP     "&amp;"

#define TABSIZE     4

int main(void)
{
    int i;
    int c;
    int space;
    int length = 0;

    while ((c = fgetc(stdin)) != EOF) {
        switch (c) {
            case '\t':
                if (length >= TABSIZE)
                    space = TABSIZE - length % TABSIZE;
                else
                    space = TABSIZE - length;
                for (i = 0; i < space; i++)
                    fputs(NBSP, stdout);
                length += space;
                break;
            case ' ':
                fputs(NBSP, stdout);
                length += 1;
                break;
            case '&':
                fputs(AMP, stdout);
                length += 1;
                break;
            case '\n':
                fputc(c, stdout);
                length = 0;
                break;
            default:
                fputc(c, stdout);
                length += 1;
                break;
        }
    }
    return 0;
}