Tymek Temat założony przez niniejszego użytkownika |
Problem z operacją na plikach » 2011-01-08 19:30:50 #include <iostream.h> #include <fstream.h> struct firmy { char * nazwa; float przychod; }; main() { firmy firma; ofstream plik1( "dane_firmy.dat", ios::binary | ios::app | ios::out ); firma.nazwa = "test"; firma.przychod = 23; plik1.write( reinterpret_cast < char *>( & firma ), sizeof( firma ) ); plik1.close(); int i = 1; ifstream plik( "dane_firmy.dat", ios::binary | ios::in ); while( 1 ) { plik.read( reinterpret_cast < char *>( & firma ), sizeof( firma ) ); if( plik.eof() ) break; cout << i << " " << firma.nazwa << " " << firma.przychod << endl; i++; } plik.close(); getchar(); }
To zadanie muszę zamienić na " Przykład 1 - obsługa programu za pomocą menu. Poszczególne operacje wykonujemy za pomocą funkcji. Dane wczytujemy z klawiatury." nie za bardzo mi to poszło i mam dużo błędów z którymi sam nie nie mogę się uporać #include <iostream> #include <fstream> struct firmy { char * nazwa; float przychod; };
void zapisz_do_pliku( ifstream * plik1, firmy dane ) { plik1->read( reinterpret_cast < char *>( & dane ), sizeof( dane ) ); }
void odczytaj_z_pliku( ofstram * plik2, firmy dane ) { plik2->write( reinterpret_cast < char *>( & dane ), sizeof( dane ) ); }
int main() { cout << "wybierz opcje 1 dla zapisania , 2 dla odczytania " << endl; cin >> wybor; switch( wybor ) case 1 : cin >> firma.nazwa >> firma.przychod; zapisz_do_pliku( plik1, & firma ); break; case 2: odczytaj_z_pliku( plik2, & firma ); cout << firma.nazwa << firma, przychod; break; }
firmy firma; ofstream plik1( "dane_firmy.dat", ios::binary | ios::app | ios::out ); ifstream plik2( "dane_firmy.dat", ios::binary | ios::in ); firma.nazwa = "test"; firma.przychod = 23;
plik1.close();
system( "pause" ); }
|
|
dmx81 |
» 2011-01-08 23:44:35 po pierwsze
wybor - int?char? cokolwiek?
|
|
dmx81 |
» 2011-01-08 23:53:58 po drugie:
plik1, plik2 - uzywasz zmiennych zanim zadeklarujesz/zdefiniujesz
po trzecie, to samo firma
no i using namespace std ? albo std::cout itd... |
|
ison |
» 2011-01-08 23:55:26 brakuje ci przestrzeni nazw std w linii 16 powinno być ofstream a nie ofstram zmienna wybor jest niezadeklarowana dopisz przed w linii 29 zmienna firma nie jest zadeklarowana dopisz na początku funkcji main przy switchu brakuje ci klamer plik1 i plik2 w funkcji main są niezadeklarowane w linii 39 zmienne plik1 i plik2 nazwij inaczej, nazwy ci kolidują (ifstream i ofstream) błędów jest więcej... |
|
dmx81 |
» 2011-01-08 23:58:40 widze ze sie zdublowalismy w odpowiedziach w tym samym czasie ;)- wazne, aby autor postu odnalazl bledy i poprawil...
PS>> nasuwa sie pytanie, czy przy tak podstawowych bledach, znane jest ci rzutowanie, ktorego tu uzywasz? |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-01-09 15:13:04 #include <iostream> #include <fstream> using namespace std;
struct firmy { char * nazwa; float przychod; void zapisz_do_pliku( ifstream * plik1, firmy dane ); void odczytaj_z_pliku( ofstream * plik2, firmy dane ); };
void zapisz_do_pliku( ifstream * plik1, firmy dane ) { plik1->read( reinterpret_cast < char *>( & dane ), sizeof( dane ) ); }
void odczytaj_z_pliku( ofstream * plik2, firmy dane ) { plik2->write( reinterpret_cast < char *>( & dane ), sizeof( dane ) ); }
int main() { ofstream plik1( "dane_firmy.dat", ios::binary | ios::app | ios::out ); ifstream plik2( "dane_firmy.dat", ios::binary | ios::in ); firmy firma; int wybor; firma.nazwa = "test"; firma.przychod = 23; cout << "wybierz opcje 1 dla zapisania , 2 dla odczytania " << endl; cin >> wybor; switch( wybor ) { case 1: cin >> firma.nazwa >> firma.przychod; zapisz_do_pliku( plik1, & firma ); break; case 2: odczytaj_z_pliku( plik2, & firma ); cout << firma.nazwa << firma.przychod; break; } plik1.close(); plik2.close(); system( "pause" ); }
wiecie może co to za błędy? 38 invalid conversion from `void*' to `std::ifstream*' 38 conversion from `firmy*' to non-scalar type `firmy' requested 41 invalid conversion from `void*' to `std::ofstream*' Jeżeli ktoś wie co skopałem z tymi wskaźnikami i może mi wytłumaczyć będę bardzo wdzięczny |
|
ison |
» 2011-01-09 16:44:48 w funkcji void zapisz_do_pliku( ifstream * plik1, firmy dane )
argumentem jest ifstream a ty próbujesz przekazać obiekt typu ofstream |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-01-09 17:04:08 #include <iostream> #include <fstream> using namespace std;
struct firmy { char * nazwa; float przychod; void zapisz_do_pliku( ifstream * plik1, firmy dane ); void odczytaj_z_pliku( ofstream * plik2, firmy dane ); };
void zapisz_do_pliku( ifstream * plik1, firmy dane ) { plik1->read( reinterpret_cast < char *>( & dane ), sizeof( dane ) ); }
void odczytaj_z_pliku( ofstream * plik2, firmy dane ) { plik2->write( reinterpret_cast < char *>( & dane ), sizeof( dane ) ); }
int main() { ofstream plik2( "dane_firmy.dat", ios::binary | ios::app | ios::out ); ifstream plik1( "dane_firmy.dat", ios::binary | ios::in ); firmy firma; int wybor; firma.nazwa = "test"; firma.przychod = 23; cout << "wybierz opcje 1 dla zapisania , 2 dla odczytania " << endl; cin >> wybor; switch( wybor ) { case 1: cin >> firma.nazwa >> firma.przychod; zapisz_do_pliku( plik1, & firma ); break; case 2: odczytaj_z_pliku( plik2, & firma ); cout << firma.nazwa << firma.przychod; break; } plik1.close(); plik2.close(); system( "pause" ); }
Poprawiłem ale nadal mam błąd 38 a.cpp invalid conversion from `void*' to `std::ifstream*' 38 1 a.cpp conversion from `firmy*' to non-scalar type `firmy' requested 41 invalid conversion from `void*' to `std::ofstream*' 41 C:\Documents and Settings\x\Pulpit\Studia\Projekty programów\Lab 11\zadanie 1 a.cppnon-scalar type `firmy' requested |
|
« 1 » 2 |