HTMLコンバータ | spin on the RITZ

HTMLコンバータ

昨日ソース張る時につかったHTMLコンバータの簡易版


#include <stdio.h>

#define TAB_SPACE 4
#define CHAR ' '

void func(int word)
{
    switch (word) {
        case '\"':
            printf("&quot;");
            break;
        case '&':
            printf("&amp;");
            break;
        case '<':
            printf("&lt");
            break;
        case '>':
            printf("&gt;");
            break;
        default:
            putchar(word);
            break;
    }
}

int main(void)
{
    int word,gap;
    int word_count = 0;
    int i;

    printf("<pre>\n");
    while((word=getchar()) != EOF){
        switch(word){
        case '\n':
            putchar(word);
            word_count = 0;
            break;
        case '\t':
            gap = TAB_SPACE - (word_count % TAB_SPACE);
            for(i = 0;i < gap;i++){
                putchar(CHAR);
            word_count += gap;
            break;
        default:
            func(word);
            word_count++;
            break;
        }
    }
    printf("</pre>\n");

    return 0;
}



もともとあったタブ展開プログラムに変換機能突っ込んだらこんなのになっちゃったorz