Odczytywanie rozmiaru pliku

0

Witam,
czy ktoś orientuje się jak odczytać rozmiar pliku z poziomu c w systemie LINUX ?
Przejrzałam już masę kursów (głównie anglojęzycznych) i jedyne co znalazłam, to filesize(), ale podobno działa tylko pod windowsem/dosem (pod linuxem w każdym razie nie, bo sprawdzałam)
Wiem, że istnieje możliwość otwarcia pliku z ustawienie wskażnika na jego końcu i odczytanie położenia tego wskaźnika, ale dla mnie jest to rozwięzanie:

  1. Mało eleganckie
  2. Niewygodne z uwagi na fakt, iż z tego pliku odczytywać będę dane, co wymusi konieczność ponownego pozycjonowania wskaźnika na początek pliku

z góry dziękuję za wszelkie sugestie
Olka

PS zastanawiałam sie nad użyciem funkcji systemowej która sprawdziłaby rozmiar, ale nie wiem jak (i czy w ogole sie da...) przekazać to do zmiennej w c++</b>

0

Ogólnie:

  • otworzyć w trybie binarnym (fopen, ifstream)
  • ustawić się na końcu pliku (fseek, .seekX)
  • odczytać pozycję w pliku (ftell, .tellX)

Odczytana pozycja to rozmiar pliku.

http://4programmers.net/faq.php?id=739

0

Albo prosciej:

#include <sys/stat.h>

    struct stat results;

int main()
{
    if (stat("plik.txt", &results) == 0)
        printf("File size: %d\n", results.st_size);
    else
        printf("Blad.\n");

    return 0;
}
0
marcinEc napisał(a)

Ogólnie:

  • otworzyć w trybie binarnym (fopen, ifstream)
  • ustawić się na końcu pliku (fseek, .seekX)
  • odczytać pozycję w pliku (ftell, .tellX)

Odczytana pozycja to rozmiar pliku.

http://4programmers.net/faq.php?id=739

Dzięki za odzew.
Ale zaznaczyłam w poście, że to rozwiązanie nie bardzo mnie zadowala...

pozdrawiam
Olka

Malcolm napisał(a)

Albo prosciej:

#include <sys/stat.h>

    struct stat results;

int main()
{
    if (stat("plik.txt", &results) == 0)
        printf("File size: %d\n", results.st_size);
    else
        printf("Blad.\n");

    return 0;
}

Właśnie takiego rozwiązania poszukiwałam, bardzo dziękuję za pomoc
pozdrawiam
Olka

0
olka napisał(a)
marcinEc napisał(a)

Ogólnie:

[...]
Dzięki za odzew.
Ale zaznaczyłam w poście, że to rozwiązanie nie bardzo mnie zadowala...

Ooops! :)

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