Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Ignorowanie/Usuwanie pustej linii podczas odczytu z pliku

Ostatnio zmodyfikowano 2012-11-22 16:55
Autor Wiadomość
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:

C/C++
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ć.
P-69693
DejaVu
» 2012-11-22 16:55:47
Sprawdź:
C/C++
fscanf( baza_gier, "%d %s %s %s %s %s %d\n",...)
P-69694
« 1 »
  Strona 1 z 1