Jak się nazywała ta funkcja z biblioteki GNU albo jakieś innej niż glibc, która pozwalała czytać plik trochę bardziej cwanie niż fopen i fgets. Taka która sama se alokowała pamięć, taka bardziej cwana. Była taka, ale mi wyleciało z głowy i niemoge tego znaleźć bo wszedzie piszą o fgets i fopen
Chodzi o mmap albo open?
@AnyKtokolwiek @kq może to nie była koniecznie funkcja, która czytała plik a może czytała po prostu linie. Z tego co mi się wydaje wymagało to #include jakiejś biblioteki z GNU - ten kod wtedy działał głównie tylko pod Linux (nie była to standardowa biblioteka języka C). fscan , fget tylko że z gnu. kurde nie wiem czy to nie była getline. Jak najlepiej czytać pliki w C? Stosujecie po prostu fopen?
Jeśli mmap
jest wygodne dla danego rozwiązania, dobrze użyć. Swoją drogą API open
/read
też używają jej w implementacji. Jeśli by wychodziło, że i tak zaimplementujesz open
/read
to bez sensu. :) Jeśli chcesz przenośności na inne systemu, używaj biblioteki standardowej.
karolinaa napisał(a):
Jak najlepiej czytać pliki w C? Stosujecie po prostu fopen?
Rodzina funkcji na poziomie struktury FILE (fopen & company) jest wygodna, ale (chyba celowo) uboga w ambitne ficzery (np pierwsze z brzegu, nie ma otwarcia dzielonego). Ale również jest w pełni przenośna. W niektórych kompilatorach może być limit otwartych FILE * do np jakiś 50ciu.
Rodzina na handlerach (open, close, read, write i inne) ma więcej subtelnych możliwości, trybów otwarcia. I tu już, choćby w stałych, pojawia się lekka nieprzenośność. Gdyby się pisało jakiś kernel bazy danych itd... to w tym. To też jest dla każdego (niemal) programisty.
Przy tej drugiej rodzinie jest taka "hackerska" funkcja jak ioctl(), gdzie przenośność ogranicza się do nazwy funkcji, a pozwala sięgać do flaków i specyfik systemu. Osobiście nigdy nie używałem, ale dużo czytałem, w tym podręczniki uniksowe sprzed epoki linuksa.
Jednak z czytaniem linii nie ma nic wspólnego, tu nawet nie ma koncepcji linii :(
Dzięki za odpowiedzi to mi chyba wystarcza