Przestań używać fscanf do czytania plików tekstowych. To pułapka. Jeśli Twoje dane nie zostaną idealnie sformatowane co do ostatniego miejsca, fscanf ulegnie awarii, zerwie wyrównanie i pozostawi Cię z koszmarem debugowania. Niezawodna ścieżka? Otwórz plik w trybie „r”, użyj fgets, aby pobrać całe linie, a następnie przeanalizuj potrzebne części.
Oto prosty sposób na odczytanie pliku i wyświetlenie jego zawartości na ekranie bez zawieszania systemu.
Logika jest tutaj zwodniczo prosta. fgets wczytuje do tego bufora ciąg znaków o długości do 1000 znaków i zwraca wartość „NULL” dopiero po osiągnięciu końca pliku. Wysyła dane bezpośrednio na standardowe wyjście poprzez printf. Czy zauważyłeś brak \n w ciągu formatu printf? To jest zamierzone. fgets automatycznie dodaje znak nowej linii na końcu czytanej linii. Jeśli dodasz własne \n, otrzymasz podwójne odstępy. Co ważniejsze, jeśli linia jest dłuższa niż 1000 znaków, fgets nie doda znaku nowej linii. Możesz wykryć ten częściowy odczyt, sprawdzając brak \n, co jest przydatną techniką w przypadku nieprawidłowych danych.
„Użyj fgets, aby przeczytać każdą linię, a następnie przeanalizuj potrzebne części.”
Jest jeden krytyczny błąd, który dezorientuje nawet doświadczonych programistów. Unikaj błędnej pisowni fclose, wpisując zamiast tego close. Kompilator tego nie zauważy. Funkcja „zamknij” istnieje i w przypadku małych skryptów, które otwierają i zamykają plik tylko raz lub dwa razy, wszystko może wydawać się działać poprawnie. To kłamstwo.
Jeśli uruchomisz to w pętli, polecenie „close” nie będzie w stanie poprawnie zwolnić podstawowych zasobów pliku. W końcu programowi zabraknie dostępnych uchwytów plików lub miejsca w pamięci i nastąpi awaria. fclose to jedyny poprawny sposób zamknięcia pliku. „zamknij” to skrót prowadzący do niesprawności. Trzymaj się standardowej biblioteki. Sprawdź swoje bufory. Nie pozwól, aby literówka pochłonęła Twoją pamięć.


























