problem z zapisem
Ostatnio zmodyfikowano 2012-01-08 21:51
El-Pablo Temat założony przez niniejszego użytkownika |
problem z zapisem » 2012-01-08 20:44:08 Hej czy mógłby ktoś sprawdzić ten kod u siebie na kompie, program kompiluje sie i odpala ale gdy tylko chce zapisac do pliku wywala ze "Nie udało sie otworzyc pliku", przed intalacja win 7 działało chyba dobrze lecz wydaje mi sie ze nie powinno miec to nic wspólnego ze zmianą systemu o to kod: #include <cstdlib> #include <iostream> #include <fstream> #include <string>
using namespace std; struct osoba { string imie; string nazwisko; int telefon; osoba * next; }; osoba * poczatek = NULL; const char * nazwa_pliku; void dodaj() { osoba * nowa = new osoba; cout << "Wpisz imie "; cin >> nowa->imie; cout << "Wpisz nazwisko "; cin >> nowa->nazwisko; cout << "Wpisz telefon "; cin >> nowa->telefon; nowa->next = NULL; if( poczatek == NULL ) { poczatek = nowa; } else { osoba * szukaj = poczatek; while( szukaj->next != NULL ) { szukaj = szukaj->next; } szukaj->next = nowa; } } void wyswietl() { if( poczatek != NULL ) { osoba * pokaz = poczatek; while( pokaz->next != NULL ) { cout << endl << pokaz->imie; cout << endl << pokaz->nazwisko; cout << endl << pokaz->telefon << endl; pokaz = pokaz->next; } cout << endl << pokaz->imie; cout << endl << pokaz->nazwisko; cout << endl << pokaz->telefon << endl; } } void szukaj() { int a; cout << " Podaj numer szukanego telefonu : "; cin >> a; osoba * szuk = poczatek; while( szuk->next != NULL ) { if( szuk->telefon == a ) { break; } szuk = szuk->next; } if( szuk->telefon == a ) { cout << endl << szuk->imie; cout << endl << szuk->nazwisko; cout << endl << szuk->telefon << endl; } } void zapisz() { fstream plik( nazwa_pliku, fstream::out | fstream::app ); if( plik.is_open() ) { if( poczatek != NULL ) { osoba * pokaz = poczatek; while( pokaz->next != NULL ) { plik << pokaz->imie; plik << endl << pokaz->nazwisko; plik << endl << pokaz->telefon << endl; pokaz = pokaz->next; } plik << pokaz->imie; plik << endl << pokaz->nazwisko; plik << endl << pokaz->telefon << endl; } plik.close(); } else cout << "Nie udalo sie otworzyc pliku"; } void wczytaj() { string line; fstream plik; plik.open( nazwa_pliku, fstream::in ); if( plik.is_open() ) { getline( plik, line ); while( !plik.eof() ) { osoba * nowa = new osoba; nowa->imie = line; getline( plik, line ); nowa->nazwisko = line; getline( plik, line ); nowa->telefon = atoi( line.c_str() ); getline( plik, line ); nowa->next = NULL; if( poczatek == NULL ) { poczatek = nowa; } else { osoba * szukaj = poczatek; while( szukaj->next != NULL ) { szukaj = szukaj->next; } szukaj->next = nowa; } } plik.close(); } } int main( int argc, char * argv[] ) { nazwa_pliku = argv[ 1 ]; float pi = 3.14; cout << "Pi = " << pi << " adres = " << & pi << endl; float * addr; addr = & pi; cout << "adres = " << addr << " wartosc = " << * addr << endl; int a; while( a != 6 ) { cout << "Wybierz : \n1 - dodaj osobe \n2 - wyswietl dane \n3 - wyszukaj telefon \n4 - zapisz \n5 - wczytaj \n6 - koniec\n"; cin >> a; switch( a ) { case 1: dodaj(); break; case 2: wyswietl(); break; case 3: szukaj(); break; case 4: zapisz(); break; case 5: wczytaj(); break; } } system( "PAUSE" ); return EXIT_SUCCESS; } |
|
malan |
» 2012-01-08 20:47:22 Uruchom z prawami administratora. |
|
DejaVu |
» 2012-01-08 20:48:20 A czy w ogóle wiesz jak uruchomić ten program poprawnie? |
|
El-Pablo Temat założony przez niniejszego użytkownika |
» 2012-01-08 21:27:51 no uruchamiam dev c++ jako admin klikam kompiluj i uruchom i heja, pod win xp z tego co pamietam smigał a tu lipa :( |
|
CodeMeister |
» 2012-01-08 21:28:34 A tam nie mialo byc ios::app, ios::out itd.? |
|
El-Pablo Temat założony przez niniejszego użytkownika |
» 2012-01-08 21:32:28 koles na zajeciach mówił ze fstream::out | fstream::app... i przedtem działało, zreszta z ios::app, ios::ou tez wywala ze nie udało sie otworzyc pliku jak chce zapisac do pliku dane |
|
CodeMeister |
» 2012-01-08 21:34:37 Tworzysz najpierw plik? |
|
pekfos |
» 2012-01-08 21:36:14 I jak ma niby działać? cmd i: program plik koles na zajeciach mówił ze fstream::out | fstream::app... i przedtem działało, zreszta z ios::app, ios::ou tez wywala ze nie udało sie otworzyc pliku jak chce zapisac do pliku dane |
fstream::out i ios::out to to samo, itd. fstream dziedziczy te flagi po ios. Na ogół pisze się ios::flaga bo tak jest krócej :P |
|
« 1 » 2 |