Šta je novo?

Problem sa upisom strukture u bin datoteku. C++

^GOJKO^

Slavan
Učlanjen(a)
09.06.2007
Poruke
248
Poena
319
Kao sto naslov kaze, imam problem sa upisivanjem strukture u bin datoteku. Ne izbacuje nikakvu gresku, jednostavno nece da upise.

Kod:
#include <iostream>
#include <fstream>
#include <string>
#define MAX 100

using namespace std;
fstream f;
struct adresar {
	char ime_prezime[MAX+1];
	char email[MAX+1];
	char br_mob_telefona[MAX+1]; 
	char br_fix_telefona[MAX+1];
	
}a1;
void upisivanje(void);
void citanje(void);

int main()
{
	
	upisivanje();
}


void upisivanje(void)
{
	

	f.open("datoteka1.bin",ios::out || ios::binary);
	if(!f) {
	
	cout <<"Problem sa otvaranjem datoteke";
	exit(1);
	}

	while(1)
	{

		cout <<"Unesite ime i prezime";
		cin >> a1.ime_prezime;

		if(strcmp(a1.ime_prezime,"kraj")==0)
		{
			exit(1);
		}

		cout <<"Unesite email";
		cin >> a1.email;
		
		cout <<"Unesite  fiksnog telefona";
		cin >> a1.br_fix_telefona;

		
		cout <<"Unesite broj mobilnog telefona";
		cin >> a1.br_mob_telefona;

		

		f.write((char *)&a1,sizeof(adresar));
	}
	f.close();
	
}

void citanje(void)

{
	f.open("datoteka1.bin",ios::in || ios::binary);
	if(!f) {
	
	cout <<"Problem sa otvaranjem datoteke";
	exit(1);
	}

	while(1)
	{
		f.read((char *)&a1,sizeof(adresar));
		cout << a1.ime_prezime << " " << a1.email << " " << a1.br_fix_telefona << " " << a1.br_fix_telefona ;  

	}

}
 
Nisam kompajlirao kod, ali ja to vidim ovako. Kada uneses "kraj" ti izadjes iz programa, a ne iz while petlje. Time si preskocio f.close(), sto moze biti uzrok. Bolje stavi break ili return (zavisi od mesta u programu) umesto exit() pa vidi onda. Na kraju krajeva, nije dobra ideja koristiti exit() iz vise razloga, tako da ako ne moras, izbegni je.
Takodje, zar ne bi trebalo da bude | umesto || u f.open() ?

Kod f.open u delu za upis ti treba ios:😱ut.

I sumnjiva mi je ova funkcija za citanje. Ovo nikada nece izaci iz while, dok ne pukne program.
 
Poslednja izmena:
Nema veze sa exit(), sad sam probao. Izbacio kompletno exit i while petlju. Uopste ne upisuje. :/
Sto se tice funkcije za citanje, ona je totalno nebitna trenutno, problem mi pravi ovo upisivanje. Pokusao na nekoliko nacina i nece nikako :/
 
Izgleda da je bilo do onog | ;/ Koja glupost je mene mucila :s Hvala na pomoci 🙂
 
Cudi me da ti kompajler nije javio gresku. Kada sam prekopirao kod, nije hteo da se kompajlira zbog toga.
 
Nazad
Vrh Dno