Keresés

Új hozzászólás Aktív témák

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #757 üzenetére

    Hali!

    Egy keresztkérdés: a dinamikus memóriafoglalást tanultátok? (MALLOC például)

    Fire.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

  • Fire/SOUL/CD

    félisten

    válasz kiskatus #757 üzenetére

    Hali!

    Először is szívesen segítek Neked, a most következő rész az csak úgy kikívánkozott belőlem, NEM NEKED SZÓL!
    "Elvittem az általad megírt programot és nem fogadta el, mert az fseek pozicionálást és az ftell-t még nem tanultuk."
    Amikor ezt elolvastam, két idézet suhant át az agyamon, az első Hofi Géza kabaréból, míg a másik egy PH tag aláírásából származik(bár ezt nem szó szerint idézem)
    "Szűz Mária idesanyám, aki a mennyekben lakozol titokban..." illetve
    "nem az a baj, hogy nagy az Isten állatkertje, hanem az, hogy alacsony a kerítés"
    Az aki ezt a feladatot feladta(alapszintű fájlkezelés kategória) és nem tanítja meg az alapszintű fájlkezelést Nektek(fseek, ftell stb), annak jobb lenne ha visszamászna a kerítésen belülre. :DDD
    Ugyanis oly módon kellett megírni a programot(fseek, ftell nélkül), hogy nyugodtan rá lehetne ragasztani azt a címkét, hogy "A világ leglassabbra optimalizált fájl-összehasonlító alkalmazása avagy hogy ne írjunk C-ben ilyen programot" :W

    Na mindegy...imhol a kód...

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    unsigned long ErrorCounter,FSize1,FSize2;
    unsigned char chFirst, chSecond;
    FILE * Szoveg1;
    FILE * Szoveg2;
    FILE * Kimenet;

    printf("Binaris osszehasonlitas\n\n");

    if (!(Szoveg1 = fopen("first.txt","rb"))) {
    fprintf(stderr,"Nem lehet megnyitni a 'first.txt' fajlt...\n");
    getchar();
    exit(-1);
    }

    if (!(Szoveg2 = fopen("second.txt","rb"))) {
    fprintf(stderr,"Nem lehet megnyitni a 'second.txt' fajlt...\n");
    fclose(Szoveg1);
    getchar();
    exit(-1);
    }
    //itt változik némileg a kód, csak úgy lehet meghatározni a fájlok hosszát
    //ha végig olvasom
    FSize1=0;
    while (fread(&chFirst,1,1,Szoveg1)==1) FSize1++;
    FSize2=0;
    while (fread(&chFirst,1,1,Szoveg2)==1) FSize2++;

    if (!FSize1 || !FSize2) {
    printf("A fajlok merete nem lehet 0 byte...");
    fclose(Szoveg1);
    fclose(Szoveg2);
    getchar();
    exit(-1);
    }
    if (FSize1!=FSize2) {
    printf("A ket fajl merete nem azonos...\n");
    fclose(Szoveg1);
    fclose(Szoveg2);
    getchar();
    exit(-1);
    }

    rewind(Szoveg1);
    rewind(Szoveg2);
    //innentől változatlan
    if (!(Kimenet = fopen("error.txt","wt"))) {
    fprintf(stderr,"Nem lehet megnyitni az 'error.txt' fajlt...\n");
    fclose(Szoveg1);
    fclose(Szoveg2);
    getchar();
    exit(-1);
    }
    ErrorCounter=0;
    while (fread(&chFirst,1,1,Szoveg1)==1) {
    fread(&chSecond,1,1,Szoveg2);
    if (chFirst!=chSecond) {
    fprintf(Kimenet,"File-pozicio: %#.8lx %#.2x <> %#.2x\n",ftell(Szoveg1),chFirst,chSecond);
    ErrorCounter++;
    }
    }
    if (ErrorCounter) printf("%lu elteres talalhato a ket fajl kozt.\nNezze meg az 'error.txt' fajl tartalmat...\n",ErrorCounter);
    else printf("A ket fajl azonos...\n");

    fclose(Szoveg1);
    fclose(Szoveg2);
    fclose(Kimenet);

    system("pause");

    return 0;
    }

    Fire.

    UI: ha legközelebb is kódot illesztesz be a HSZ-be, akkor légyszíves használd az erre a célra "kifejlesztett" :DDD KÓD feliratú gombot.

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

Új hozzászólás Aktív témák