Zwrócenie wskaźnika na jeden z plików przechowywanych w tablicy

0

Mam funckję:

struct file_t* qw(const struct file_t* files);

która ma zwrócić mi wsażnik na jeden z plików przchowywany w tabliczy files. NIe mam jednak pojęcia jak to zapisać. Próbowałem:

return file[i].file

które co prawda działa w code block jednak wyskakują uwagi jaki jest prawidłowy zapis?

0

Zapewne odwołujesz się do wskaźnika przez kropkę, a powinieneś przez ->

Natomiast ciężko stwierdzić co to jest file[i] bo nigdzie w kodzie tego nie ma. Chodziło o files[i]

0

Tak chodziło o to, jednak zapis -> nie działa.

0

Funkcja zwraca strukturę, a ty jakiś element tej struktury w return dajesz :>

0

Pokaż cały kod funkcji i całą strukturę

0

Ty implementujesz tę funkcję, czy chcesz jej użyć?

0

Coś takiego, i chcę jej użyć.Funkcja zwraca wskaźnik na plik o najmniejszym rozmiarze.

struct file
{
    FILE *f;
    int size;
};

struct file_t* file(const struct file_t* files, int size)
{
    
    if(files==NULL||size<1)
        return NULL;
    int i=0,r=0,w=0;
    r=files[0].size;
    for(i=0;i<size;i++)
    {
    q=files[i].size;
        if(q<r)
        {
            r=q;
            w=i;
        }
    }
    return files[w].f;
}
0

To się w ogóle kompiluje?

0

Tak i nawet, operacje na pliku wychodzą dobrze.

0

To ciekawe, bo nie ma nigdzie definicji q,

0

dobra to zapewne dlatego że usunąłem część kodu, ze wzglądu na rozmiar, ale to jest główny jego sens. I głównie chodzi mi o tego returna.

0

struct file_t* i FILE* to różne typy.

0

W takim razie co należy zrobić żeby zwracało wskażnik do pliku?Tym bardzie że nie mogę zmieniać deklaracji funkcji.

0

Zakładając, że file_t i file to to samo, return &files[w];

1 użytkowników online, w tym zalogowanych: 0, gości: 1