Rozmiar pliku

0

mam problem;(

Mój plik wygląda tak:

Numer:  1
Marka Samochodu:  345235
Model Samochodu:  345
Rok produkcji:  345
Cena Samochodu:  345
Przejechane w km:  345
Moc Silnika:  345
Pojemność w dm^3:  345
Miejsca siedzace:  345
Kolor Samochodu:  345

Numer:  2
Marka Samochodu:  345
Model Samochodu:  345
Rok produkcji:  345
Cena Samochodu:  345
Przejechane w km:  345
Moc Silnika:  345
Pojemność w dm^3:  345
Miejsca siedzace:  345
Kolor Samochodu:  345

a moja funkcja do zliczenia rozmiaru pliku wygląda tak:

int rozmiar(char *in)
{
	string model , marka , kolor,;
	long int rok , poj ,numer, moc , przej;
	long double cena , siedzenia;
	
	ifstream plik;
	plik.open(in);
	int rozm = 0;
	
	while(!plik.eof())
	{
                      
	    plik>>numer;
		plik>>marka;
		plik>>model;
		plik>>rok;
		plik>>cena;
		plik>>przej;
		plik>>moc;
		plik>>poj;
		plik>>siedzenia;
		plik>>kolor;
		
		
		rozm += 1;
	}
	
	plik.close();
	return rozm;
}

Mój problem polega na tym, ze ta funkcja działa tylko gdy w pliku jest:

1
345235
345
345
345
345
345
345
345
345

2
345
345
345
345
345
345
345
345
345

A chciałbym żeby funkcja działała z tamtymi wczesniejszymi danymi. Próbowałem z getline, plik.ignore(). i innych lecz nie chce mi diałać :-(

0
int rozm=0;

while(plik.ignore(INT_MAX,'\n').good())
{
    if(plik.gcount()>1)++rozm;
}

rozm/=10;
0

a jak mam w pliku :

1
345235
345
345
345
345
345
345
345
345

2
345
345
345
345
345
345
345
345
345

i funkcja wyciagajaca z pliku samochody do tablicy struktur która działa tylko z tymi :

void zpliku(char *in,Samochod *s,int n)
{
	  ifstream plik;
	  plik.open(in);


    	for(int i=0;i<n;++i)
       {
        
        plik>>s[i].numer;
		plik>>s[i].marka;
		plik>>s[i].model;
		plik>>s[i].rok;
		plik>>s[i].cena;
		plik>>s[i].przej;
		plik>>s[i].moc;
		plik>>s[i].poj;
		plik>>s[i].siedzenia;
		plik>>s[i].kolor;
        }
}

a chciałbym ze ta funkcja działała dla danych :

Numer:  1
Marka Samochodu:  45345
Model Samochodu:  345
Rok produkcji:  345
Cena Samochodu:  34
Przejechane w km:  534
Moc Silnika:  5
Pojemność w dm^3:  345
Miejsca siedzace:  34
Kolor Samochodu:  53

Numer:  2
Marka Samochodu:  45
Model Samochodu:  34
Rok produkcji:  5
Cena Samochodu:  34
Przejechane w km:  53
Moc Silnika:  45
Pojemność w dm^3:  34
Miejsca siedzace:  53
Kolor Samochodu:  45

tzn ,żeby numer, marka samochodu,rok produkcji itd. wczytało normalnie do konsoli albo ominęło a wyciągnęło tylko dane do tablicy struktur. prosze o pomoc

0

Jeśli linie zawsze mają formę: [nazwa]: [wartość], to tu masz przykład jak wyciągać wartości:

int	value;

while(plik.ignore(INT_MAX,':'))
{
	plik>>value;
	cout<<value<<endl;
}
0

Wyciaga wartość ale jak zapisać do tablicy struktury???

0
plik.ignore(INT_MAX,':')
plik>>s[i].numer;
plik.ignore(INT_MAX,':')
plik>>s[i].marka;
//itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1