Struktury, wczytywanie z pliku
Ostatnio zmodyfikowano 2011-12-28 14:02
Szelka Temat założony przez niniejszego użytkownika |
Struktury, wczytywanie z pliku » 2011-12-27 17:52:35 Potrzebuje do programu funkcje która wczyta z pliku dane i wpisze do tablicy struktur. Tak aby pierwszy wiersz przyporządkowany był do imienia drugi do nazwiska itp. Szukam tego od dwóch dni i nic. Przyda się każda pomoc od gotowego kodu po tytuł książki w której jest to zagadnienie omówione. |
|
pekfos |
» 2011-12-27 18:00:13 Potrzebuje do programu funkcje która[..] |
To napisz sobie.. |
|
Szelka Temat założony przez niniejszego użytkownika |
» 2011-12-27 18:08:55 Thank you Mr Obvious. A ja głupi liczyłem na pomoc... |
|
SeaMonster131 |
» 2011-12-27 18:17:14 No jej, poczytaj sobie np o fstream ( Obsługa plików), no i wczytuj dane do zmiennej tej struktury... Gotowego kodu nikt Ci nie da. |
|
Szelka Temat założony przez niniejszego użytkownika |
» 2011-12-27 20:35:16 #include <iostream> #include <fstream>
using namespace std; string t; struct test { string imie; string nazwisko; string adres; }; test a[ 10 ];
int main() { std::fstream plik; plik.open( "plik.txt", ios::in ); std::string napis; int k = 1; for( int i = 0; plik.eof() != 1; i++ ) { getline( plik, napis ); if( k == 1 ) { cout << "i=" << i << "k=" << k << " " << napis << "\n"; a[ i ].imie = napis; } if( k == 2 ) { cout << "i=" << i << "k=" << k << " " << napis << "\n"; a[ i ].nazwisko = napis; } if( k == 3 ) { cout << "i=" << i << "k=" << k << " " << napis << "\n"; a[ i ].adres = napis; k = 0; } k++; } plik.close(); for( int i = 0; i < 1; i++ ) { cout << a[ i ].imie << "\n"; cout << a[ i ].nazwisko << "\n"; cout << a[ 1 ].adres << "\n"; } system( "pause" ); return( 0 ); }
Coś takiego mi wyszło, ale nie działa podstawianie wiersza do struktury(np a .imie=napis) Ktoś ma jakiś pomysł? |
|
pekfos |
» 2011-12-27 20:45:26 prościej będzie tak: getline( plik, test[ a ].imie ); getline( plik, test[ a ].nazwisko );
|
|
Szelka Temat założony przez niniejszego użytkownika |
» 2011-12-28 09:07:26 #include <iostream> #include <fstream>
using namespace std; string t; struct test { string imie; string nazwisko; string adres; }; test a[ 10 ];
int main() { std::fstream plik; plik.open( "plik.txt", ios::in ); std::string napis; int k = 1; for( int i = 0; plik.eof() != 1; i ) { if( k == 1 ) { cout << "i=" << i << "k=" << k << " " << napis << "\n"; getline( plik, a[ i ].imie ); } if( k == 2 ) { cout << "i=" << i << "k=" << k << " " << napis << "\n"; getline( plik, a[ i ].nazwisko ); } if( k == 3 ) { cout << "i=" << i << "k=" << k << " " << napis << "\n"; getline( plik, a[ i ].adres ); k = 0; i++; } k++; } plik.close(); for( int i = 0; i < 1; i++ ) { cout << a[ i ].imie << "\n"; cout << a[ i ].nazwisko << "\n"; cout << a[ 1 ].adres << "\n"; } system( "pause" ); return( 0 ); }
Kod uprościł się i trochę poprawiłem ale nie do końca. Nadal źle wczytuje dane ale ma teraz problem tylko z a .adres. Przypisuje do niego zawsze 6 wiersz z pliku. Ma ktoś pomysł? |
|
malan |
» 2011-12-28 11:50:27 for( int i = 0; plik.eof() != 1; i )
i? |
|
« 1 » 2 |