(toiminnot)

hwechtla-tl: Entify

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


Tämä yksinkertainen ohjelma ISO Latin-1 -tekstin muuntamiseksi HTML-kelpoiseksi on yleistä omaisuutta. Muunnostaulukko on ripattu W3C Tidy:sta - tosin se ei ole siellä ollenkaan samassa muodossa.

#include <stdio.h>

char *trans[] = {
        "\000", "\001", "\002", "\003", "\004", "\005", "\006", "\007", 
        "\010", "\011", "\012", "\013", "\014", "\015", "\016", "\017", 
        "\020", "\021", "\022", "\023", "\024", "\025", "\026", "\027", 
        "\030", "\031", "\032", "\033", "\034", "\035", "\036", "\037", 
        "\040", "\041", "&quot;", "\043", "\044", "\045", "&amp;", "\047", 
        "\050", "\051", "\052", "\053", "\054", "\055", "\056", "\057", 
        "\060", "\061", "\062", "\063", "\064", "\065", "\066", "\067", 
        "\070", "\071", "\072", "\073", "&lt;", "\075", "&gt;", "\077", 
        "\100", "\101", "\102", "\103", "\104", "\105", "\106", "\107", 
        "\110", "\111", "\112", "\113", "\114", "\115", "\116", "\117", 
        "\120", "\121", "\122", "\123", "\124", "\125", "\126", "\127", 
        "\130", "\131", "\132", "\133", "\134", "\135", "\136", "\137", 
        "\140", "\141", "\142", "\143", "\144", "\145", "\146", "\147", 
        "\150", "\151", "\152", "\153", "\154", "\155", "\156", "\157", 
        "\160", "\161", "\162", "\163", "\164", "\165", "\166", "\167", 
        "\170", "\171", "\172", "\173", "\174", "\175", "\176", "\177", 
        "\200", "\201", "\202", "\203", "\204", "\205", "\206", "\207", 
        "\210", "\211", "\212", "\213", "\214", "\215", "\216", "\217", 
        "\220", "\221", "\222", "\223", "\224", "\225", "\226", "\227", 
        "\230", "\231", "\232", "\233", "\234", "\235", "\236", "\237", 
        "&nbsp;", "&iexcl;", "&cent;", "&pound;",
        "&curren;", "&yen;", "&brvbar;", "&sect;", 
        "&uml;", "&copy;", "&ordf;", "&laquo;",
        "&not;", "&shy;", "&reg;", "&macr;", 
        "&deg;", "&plusmn;", "&sup2;", "&sup3;",
        "&acute;", "&micro;", "&para;", "&middot;", 
        "&cedil;", "&sup1;", "&ordm;", "&raquo;",
        "&frac14;", "&frac12;", "&frac34;", "&iquest;", 
        "&Agrave;", "&Aacute;", "&Acirc;", "&Atilde;",
        "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", 
        "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;",
        "&Igrave;", "&Iacute;", "&Icirc;", "&Iuml;", 
        "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;",
        "&Ocirc;", "&Otilde;", "&Ouml;", "&times;", 
        "&Oslash;", "&Ugrave;", "&Uacute;", "&Ucirc;",
        "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", 
        "&agrave;", "&aacute;", "&acirc;", "&atilde;",
        "&auml;", "&aring;", "&aelig;", "&ccedil;", 
        "&egrave;", "&eacute;", "&ecirc;", "&euml;",
        "&igrave;", "&iacute;", "&icirc;", "&iuml;", 
        "&eth;", "&ntilde;", "&ograve;", "&oacute;",
        "&ocirc;", "&otilde;", "&ouml;", "&divide;", 
        "&oslash;", "&ugrave;", "&uacute;", "&ucirc;",
        "&uuml;", "&yacute;", "&thorn;", "&yuml;"
};

int main( int ac, char *av[] )
{
        int c;
        char *escbeg = "\n[[[", *escr = escbeg;
        char *escend = "\n]]]";

        while (( c = getchar() ) != EOF ) {
                if ( c == *escr ) ++escr;
                else escr = escbeg;
                if ( !*escr ) {
                        escr = escend;
                        putchar( c );
                        while (( c = getchar() ) != EOF ) {
                                if ( c == *escr ) ++escr;
                                else escr = escend;
                                if ( !*escr ) break;
                                else putchar( c );
                        }
                        if ( c == EOF ) break;
                        escr = escbeg;
                }
                if ( !c ) putchar( 0 ); /* because of how stdio handles strings */
                else fputs( trans[c], stdout );
        }
}

Tämän ohjelman copypaste aiheutti taas tarpeen yhteen korjaukseen pikipikissä. Wikimuutokset.


kommentoi (viimeksi muutettu 27.06.2005 15:41)