Aktív témák

  • QuarK

    senior tag

    Egyelőre nem szimatolok lincshangulatot, így beillesztek ide egy forráskódot, aminek segítségével mások által beillesztett forráskód is ilyen szépen lesz formázva, nem díszítik smiley-k, és az aposztrof gond se jön elő. A lényeg: kódrészlet az input.txt-ben, pre futtatása, output.txt tartalmazza, amit a hsz-be írni kell...

    Remélem műxik. :)

  • QuarK

    senior tag

    válasz QuarK #1 üzenetére

    Itt a jó változat. :B

    #include <windows.h>
    #include <stdio.h>

    #define BUFFER_SIZE     0x10000

    char         *inbuf, outbuf[BUFFER_SIZE];

    void W_Error( char *error, ...)
    {
            va_list        argptr;
            char   text[1024];

            va_start( argptr, error);
            vsprintf( text, error, argptr);
            va_end( argptr);
            printf( "Error: %s\n", text);
            exit( 1);
    }

    int W_filelength( FILE *f)
    {
            int    pos;
            int    end;

            pos = ftell( f);
            fseek( f, 0, SEEK_END);
            end = ftell( f);
            fseek( f, pos, SEEK_SET);
            return end;
    }

    int W_FOpenFile( char *filename, FILE **file)
    {
            *file = fopen( filename, "rb");
            if ( !*file)
            {
                   *file = NULL;
                   return -1;
            }
            return W_filelength( *file);
    }

    void W_Read( void *buffer, int len, FILE *f)
    {
            int    block, remaining;
            int    read;
            byte   *buf;

            buf = ( byte*)buffer;
            remaining = len;
            while ( remaining)
            {
                   block = remaining;
                   if ( block > BUFFER_SIZE)
                         block = BUFFER_SIZE;
                   read = fread( buf, 1, block, f);
                   if ( read == 0)
                         W_Error( "W_Read: 0 bytes read");
                   if (read == -1)
                         W_Error( "W_Read: -1 bytes read");
                   remaining -= read;
                   buf += read;
            }
    }

    int W_LoadFile( char *path, void **buffer)
    {
            FILE   *h;
            byte   *buf;
            int    len;

            buf = NULL;
            len = W_FOpenFile( path, &h);
            if ( !h)
            {
                   if ( buffer)
                         *buffer = NULL;
                   return -1;
            }
            if ( !buffer)
            {
                   fclose( h);
                   return len;
            }
            buf = malloc( len + 1);
            *buffer = buf;
            W_Read( buf, len, h);
            buf[len] = 0;
            fclose( h);
            return len;
    }

    void I_strncpy( char *dest, char *src, int count)
    {
            while ( *src && count--)
                   *dest++ = *src++;
            if ( count)
                   *dest++ = 0;
    }

    void I_sprintf( char *dest, int size, char *fmt, ...)
    {
            int    len;
            va_list        argptr;
            char   bigbuffer[BUFFER_SIZE];

            if ( size > BUFFER_SIZE)
                   W_Error( "I_sprintf: size is > 64k\n");
            va_start( argptr, fmt);
            len = vsprintf( bigbuffer, fmt, argptr);
            va_end( argptr);
            I_strncpy( dest, bigbuffer, size - 1);
    }

    int main( int argc, char **argv)
    {
            int    i, j, dontadd, linelen;
            char   *ob, *token;
            FILE   *f;

            W_LoadFile( "input.txt", &inbuf);
            token = inbuf;
            ob = &outbuf[0];
            linelen = 0;
            for ( i = 0; i < strlen( token); i++)
            {
                   dontadd = 0;
                   if ( token[i] == '&')
                   {
                         I_sprintf( ob, BUFFER_SIZE - ( ob - &outbuf[0]), "&[b][/b]");
                         ob += 8;
                         dontadd = 1;
                   }
                   if ( token[i] == ' ')
                   {
                         I_sprintf( ob, BUFFER_SIZE - ( ob - &outbuf[0]), "&nbsp;");
                         ob += 6;
                         dontadd = 1;
                   }
                   if ( token[i] == '\x9')
                   {
                         int  len;

                         len = 8 - ( linelen % 8);
                         for ( j = 0; j < len; j++, ob += 6)
                              I_sprintf( ob, BUFFER_SIZE - ( ob - &outbuf[0]), "&nbsp;");
                         dontadd = 1;
                   }
                   if ( token[i] == ':')
                   {
                         I_sprintf( ob, BUFFER_SIZE - ( ob - &outbuf[0]), ":[b][/b]");
                         ob += 8;
                         dontadd = 1;
                   }
                   if ( token[i] == '[')
                   {
                         I_sprintf( ob, BUFFER_SIZE - ( ob - &outbuf[0]), "[[b][/b]");
                         ob += 8;
                         dontadd = 1;
                   }
                   if ( token[i] == '\"')
                   {
                         I_sprintf( ob, BUFFER_SIZE - ( ob - &outbuf[0]), "&quot;");
                         ob += 6;
                         dontadd = 1;
                   }
                   linelen++;
                   if ( token[i] == '\n')
                   {
                         *ob++ = '\n';
                         dontadd = 1;
                         linelen = 0;
                   }
                   if ( token[i] == '\r')
                   {
                         linelen = 0;
                         dontadd = 1;
                   }
                   if ( dontadd == 0)
                         *ob++ = token[i];
            }
            f = fopen( "output.txt", "w");
            fprintf( f, "%s", outbuf);
            fclose( f);
            *ob = 0;
            return 0;
    }

  • Miracle

    senior tag

    válasz QuarK #1 üzenetére

    a program otlete zsenialis, mar tobbszor is akadt ezzel gondom, de meg nem jutott eszembe, h kellene valami!!!! grat! remelem nem zavar, en is ideteszek egy hasonlo progit, ami windows, es linux alatt is mukodik.(mert itt ugy vannak ilyen userek is, pl. en)

    szerk: a tabokat(fujj) 4szokozos indentte alakitja, ha nem adunk meg parametert akkor az input.txt-bol alakit az output.txt-be, ha adunk neki ket parametert, akkor az elsobol a masodikba dolgozik.
    t(fujj) 4szokozos indentte alakitja, ha nem adunk meg parametert akkor az input.txt-bol alakit az output.txt-be, ha adunk neki ket parametert, akkor az elsobol a masodikba dolgozik.

    #include <iostream>
    #include <fstream>
    using namespace std;
    int main(int argc, char *argv[])
    {
        ifstream is((argc == 3)?argv[1]:''input.txt'');
        ofstream os((argc == 3)?argv[2]:''output.txt'');
        char c;
        while(is.get(c)) if (c == ' ') os << '' ''; 
                         else if (c == '\t') os << ''    '';
                         else os << c;     
    }

    [Szerkesztve]

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • QuarK

    senior tag

    válasz Miracle #3 üzenetére

    Persze, h nem. :B Most nézem, hogy a tabot nemcsak \x9, hanem \t is jelölheti C++-ban. :U

    Jah, és tudom, h kissé komplikáltan van megoldva pl. a fajlbetöltés, csak hát mivel megvoltak már ezek a függvények, egy gyors copypaste... Lustaság, hosszú kódsor...

  • Miracle

    senior tag

    válasz QuarK #4 üzenetére

    '' Lustaság, hosszú kódsor...''
    minden programozo legfobb erenye :C

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • Miracle

    senior tag

    válasz Miracle #3 üzenetére

    elrontottam

    [Szerkesztve]

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • Miracle

    senior tag

    na szoval a motor beleganyolt a kodocskamba, itt a mukodo valtozat:

    #include <iostream>
    #include <fstream>
    using namespace std;
    int main(int argc, char *argv[])
    {
        ifstream is((argc == 3)?argv[1]:''input.txt'');
        ofstream os((argc == 3)?argv[2]:''output.txt'');
        char c;
        while(is.get(c)) if (c == ' ') os << ''&nbsp;''; 
                         else if (c == '\t') os << ''&nbsp;&nbsp;&nbsp;&nbsp;'';
                         else os << c;     
    }

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • g4dg3t

    senior tag

    válasz QuarK #1 üzenetére

    Yoo 5let...grat :C
    Azert remelem egyszer majd a RIOS tudni fogja magatol is (ahogy a masik topicban irtam) es nem kell megeroszakolni :)

  • QuarK

    senior tag

    válasz Miracle #7 üzenetére

    Igen, ez már lefordul; amúgy egy pillanatra én is elméláztam, mert nem teszteltem, de aztán enyém is szépen fogadta a compile-t. :)

    mod: g4dg3t: köcce

    [Szerkesztve]

  • QuarK

    senior tag

    egy szemtelen up, hogy látszódjon, ha kéne vkinek...

  • Miracle

    senior tag

    válasz dabadab #11 üzenetére

    ehh nem ismertem :C
    /me LOL

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

Aktív témák