[C] Nie działa funkcja fgets()


(DarthVader3105) #1

Witam

Mam problem z funkcją fgets().

Uint8 loadBMPs(void)
{
Uint8 i;
FILE *graphicsList;
fpos_t graphicsListPos;
char *graphicName;

if((graphicsList = fopen("graphics/graphics.lst", "rb")) == NULL)
{
    return 1;
}

for(i = 0; i < 1; ++i)
{
    graphicsListPos = i * 128;
    fsetpos(graphicsList, &graphicsListPos);
    graphicName = "";
    if((graphicName = fgets(graphicName, 128, graphicsList)) == NULL)
    {
        return 1;
    }
    if((graphics[i] = SDL_LoadBMP(graphicName)) == NULL)
    {
        return 1;
    }
    SDL_SetColorKey(graphics[i], SDL_SRCCOLORKEY, SDL_MapRGB(graphics[i]->format, 255, 0, 255));
}

fclose(graphicsList);
return 0;
}

Wszystko wygląda, że jest OK, brak błędów kompilacji, ustawiłem, że jeżeli w tej funkcji jest return 1, to main zwraca 2, a po odpaleniu programu nic się nie pojawia i main zwraca liczbę z kosmosu. Jak komentuję if((graphicName = fgets(graphicName, 128, graphicsList)) == NULL) i return też, to wtedy normalnie mian zwraca 2. Co może byc nie tak? Wrzucam okienko z debuggera.


(DarthVader3105) #2
char *graphicName = malloc(128);

I teraz działa…