Jak sie nazywała ta funkcja w ANSI C inna niż fopen?

0

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

1

Chodzi o mmap albo open?

0

@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?

1

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.

2
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 :(

0

Dzięki za odpowiedzi to mi chyba wystarcza

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