Znaki w pliku rozpoznawane jako NULL, przedwczesne zakończenie odczytywania

0

Cześć, chcę odczytywać dane z pliku, dokładnie to od ok. 30 linii (to co się dzieje we wcześniejszych nie ma dla mnie żadnego znaczenia), problem w tym, że zawsze tylko w 2 linii są jakieś śmieci, program odczytuje je jako NULL i kończy działanie. Linie w pliku mają max po 40 znaków, 2 linia jedyna ma ponad 14k a dziwne znaki pojawiają się od około 15 miejsca.
Sposób wczytywania:

while(fgets(tb, MAX_N, plik) != NULL)

Przykładowa 2 linia (część):
obraz_2022-02-24_234411.png

Chciałbym po prostu pomijać tą 2 linie i iść dalej, macie jakiś pomysł?

6

Mam.

Czytaj jako plik binarny, czyli nie fgets a fread i spółka

ps. w czytaniu binarnym w ogóle nie ma koncepcji linii, jeśli cokolwiek jest to koncepcja bloku, bufora itd...

5
B4rte napisał(a):

Cześć, chcę odczytywać dane z pliku,

Skąd przekonanie, że masz do czynienia z plikiem tekstowym?
Z twojego opisu wynika, że to jest jakiś plik binarny o nieznanym formacie.
Jeśli nie podasz informacji co to za plik (lub samego pliku), to nie da się ci pomóc.

0

man fgets

Sprawdzasz czy to błąd, czy koniec pliku?

Moim zdaniem to powinno działać. Fgets nie kończy czytać jak napotka nul. Nul i NULL to nie to samo btw.
NULL sygnalizuje tu błąd lub EOF.

Ewentualnie przetestuj plik np tak : head -n 50 file | tail -n 20

Oraz: man getline

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