[C] Ignorowanie/Usuwanie pustej linii podczas odczytu z pliku
Ostatnio zmodyfikowano 2012-11-22 16:55
StarKillBox Temat założony przez niniejszego użytkownika |
[C] Ignorowanie/Usuwanie pustej linii podczas odczytu z pliku » 2012-11-22 16:37:04 Witam. Z programowania jestem cienki, a muszę na zaliczenie napisać program z prostą bazą danych (funkcje, plik .txt). Mam już co nieco, ale to wszystko dla mnie ciężka sprawa bo ledwo co udaje mi się napisać coś z pomocą książki i internetu. Borykam się z problemem odczytu poprawnego pliku. Oto moje funkcje zapisu i odczytu: void ZAPIS( GRY_baza * baza, int rozmiar ) { FILE * baza_gier; baza_gier = fopen( "G:\\baza_gier.txt", "wt" ); for( int i = 0; i < rozmiar; i++ ) fprintf( baza_gier, "%d %s %s %s %s %s %d\n", baza[ i ].pozycja, baza[ i ].nazwa, baza[ i ].producent, baza[ i ].wydawca, baza[ i ].gatunek, baza[ i ].platforma, baza[ i ].rok_wydania ); fclose( baza_gier ); }
int ODCZYT( GRY_baza * baza, int rozm_bazy ) { int wpis = 0; FILE * baza_gier; baza_gier = fopen( "G:\\baza_gier.txt", "rt" ); if( baza_gier != NULL ) { while( !feof( baza_gier ) ) { for( int i = 0;( !feof( baza_gier ) ) && i < rozm_bazy; i++ ) { fscanf( baza_gier, "%d %s %s %s %s %s %d", &( baza[ i ].pozycja ), & baza[ i ].nazwa, & baza[ i ].producent, & baza[ i ].wydawca, & baza[ i ].gatunek, & baza[ i ].platforma, & baza[ i ].rok_wydania ); wpis++; } } fclose( baza_gier ); } else { printf( "Nie można otworzyć pliku. \n" ); } return wpis; }
Problem jest taki jak widać, przy zapisie mi daje znak nowej linii na końcu pliku .txt. Odczyt w tym przypadku, źle działa bo wykrywa tą \n jako coś zapisanego i mi numerowanie przy dodawaniu nowej pozycji źle liczy. Jednym słowem potrzebuje pomocy jak ma wyglądać kod by przy odczycie ten znak/pusta linia na końcu była usuwana/ignorowana. Szukałem dużo ale nie potrafiłem nic pomocnego znaleźć. Przy zapisie to "\n" z końca dałem na początek i niby teraz przy odczycie dobrze liczy, ale pierwsza linia teraz w .txt jest pusta. Znajomy mi powiedział bym użył fgets, żebym sprawdzał przy pomocy fgets czy odczytana linia nie jest pusta. Jednakże nie orientuje się jak to użyć. |
|
DejaVu |
» 2012-11-22 16:55:47 Sprawdź: fscanf( baza_gier, "%d %s %s %s %s %s %d\n",...)
|
|
« 1 » |