problem ze spacją przy pobieraniuy lancucha funkcją fcanf
Ostatnio zmodyfikowano 2014-05-25 13:21
gzforever Temat założony przez niniejszego użytkownika |
problem ze spacją przy pobieraniuy lancucha funkcją fcanf » 2014-05-25 13:21:20 Czy mógłby mi ktoś powiedziec , co zrobic aby zmusić funkcje fscanf do pobrania znaku spacji ? Zapisuję do pliku za pomocą funkcji fprintf lanuch skladający sie z dwóch wyrazów + znaku '\n' tymczasem fscanf uparcie , zamiast skonczyc pobieranie lancucha w miejscu napotkania '\n' konczy w momencie napotkania spacji ( co całkowicie burzy odczytywanie kolejnych elementow). Wszystko dziala jak trzeba gdy kazdy lancuch sklada sklada sie z jednego wyrazu. zapisuję elementy struktury do pliku za pomocą poniższej funkcji: for( i = 0; i < 3; i++ ) fprintf( ptr, "%s%c%s%c%d%c", ksiazka[ i ].autor, '\n', ksiazka[ i ].tytul, '\n', ksiazka[ i ].rating, '\n' );
poniższy moduł odpowiada z odczytywanie danych z pliku ,zapis do struktury, i wyswietlanie (w celu sprawdzenia poprawnosci dodalem K na koncu kazdego wiersza) , : for( i = 0; i < 3; i++ ) { fscanf( ptr, "%s", tab ); ksiazka[ i ].autor =( char * ) malloc( strlen( tab ) + 1 ); strcpy( ksiazka[ i ].autor, tab ); fscanf( ptr, "%s", tab ); ksiazka[ i ].tytul =( char * ) malloc( strlen( tab ) + 1 ); strcpy( ksiazka[ i ].tytul, tab ); fscanf( ptr, "%d", & ksiazka[ i ].rating ); } for( i = 0; i < 3; i++ ) { printf( "%s%c\n", ksiazka[ i ].autor, 'K' ); printf( "%s%c\n", ksiazka[ i ].tytul, 'K' ); printf( "%d\n", ksiazka[ i ].rating ); }
tutaj macie przyklad jak wygląda wynik pracy programu dla pliku , który posiada elementy jednowyrazowe : http://zapodaj.net/7e8e6b9139929.jpg.htmlzawartosc pliku (widok z notatnika) : sienkiewicz potop 12 orzeszkowa nemen 12 sapkowski wiedzmin 40
printscreen : wynik pracy programu dla lanucha w ktorym wystapila spacja (printscreen) : http://zapodaj.net/c5daf1ec0b122.jpg.htmlzawartosc pliku (widok z notatnika) sienkiewicz potop 12 orzeszkowa nad niemnem 10 sapkowski wiedzmin 20
|
|
« 1 » |