Hirdetés

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

  • Jester01
    veterán

    De megírtam, hogy ne csak dumáljak itt:

    #include <stdio.h>
    #define MAX_FAJLNEV_HOSSZ 100
    FILE * filelist, * file;
    char name[MAX_FAJLNEV_HOSSZ+1], * block;
    unsigned int h;
    int main()
    {
    filelist = fopen("filelist.txt","r");
    while(!feof(filelist))
    {
    fscanf(filelist,"%s",name);
    file = fopen(name,"r");
    fseek (file,0,SEEK_END);
    h = ftell(file);
    rewind(file);
    block = (char *) malloc(h);
    fread(block,1,h,file);
    block += 4;
    fclose(file);
    fopen(strcat(name,"_jav.txt"),"w");
    fwrite(block,1,h-4,file);
    fclose(file);
    }
    fclose(filelist);
    return 0;
    }

    Ajjjaj ilyen rossz példával ne kábítsuk szegény tanulókat :P
    Hirtelen ennyi:

    1. te nem a sorok elejéről szedted le az első 4 karaktert
    2. az fscanf visszatérési értékét célszerű ellenőrizni, nem pedig a feof-ot
    3. %s formátummal nem olvasunk fájlneveket (sem) mert megáll a szóközöknél
    4. az fscanf-ben nincs hossz limit
    5. teljesen felesleges betölteni a memóriába a fájlt
    6. strcat-hoz hiányzik a megfelelő #include
    7. malloc-hoz hiányzik a megfelelő #include
    8. a malloc void*-ot ad vissza, csúnyán néznek azokra akik ezt cast-olják
    9. a lefoglalt memóriát nem szabadítod fel
    10. a változók globálisak nem lokálisak
    11. az ftell nem unsigned int-et ad vissza
    12. hibakezelés teljes hiánya

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