Fehlerhafte Werte beim einlesen von Datei



  • Hi Leute,

    Ich hab ein Programm geschrieben, dass soll mir aus einer Datei Grundbucheinträge auslesen. Leider liest es mir nur 1 mal einen richtigen Wert in die Variable 'gemarkung' ein, danach nicht mehr.

    hier die Datei: http://www.fbi.h-da.de/fileadmin/personal/j.arz/PG/Katasteramt.txt

    und hier mein code:

    #pragma once
    #include <string>
    #include <iostream>
    #include <fstream>
    #include <stdlib.h>
    #include "GrundstueckElement.h"
    #include "GrundstueckListe.h"
    
    using namespace std;
    
    void main (void)
    {	
    	string  grundbuch, gemarkung, wirtschaftsart, gros, tmp;
    	char lage[80];
    	double groesse;
    
    	GrundstueckElement * gel[50];
    	for(int x=0; x<=49;x++)
    		gel[x] = 0;
    
    	int i = 0;
    	ifstream quelle;
    	quelle.open("Katasteramt.txt",ios::in);
    
    	if (!quelle.good()) 
    	{
    		cout << "FEHLER DATEI" << endl;
    		exit(-1);
    	}
    
    	else
    	{
    
    		while((!(quelle.eof()))&& (i < 50))
    		{
    			quelle >> gemarkung;
    
    			if(gemarkung == "*****************************************")
    			{
    				quelle >> tmp >> tmp >> grundbuch;
    				quelle.getline(lage,80);
    				quelle.getline(lage,80);
    				quelle.getline(lage,80);
    				quelle.getline(lage,80);
    				quelle.getline(lage,80);
    				quelle.getline(lage,80);
    
    			}
    			else
    			{
    				quelle >> wirtschaftsart;
    				quelle >> gros;
    				gros.replace(gros.find(","),1,".");
    				groesse = atof(gros.c_str());
    
    				quelle.getline(lage,80);
    		//		gel[i] = new GrundstueckElement(grundbuch, gemarkung, wirtschaftsart, lage, groesse);
    		//		gel[i]->browse();
    				i++;
    				quelle >> gemarkung;
    			}
    		}
    	}
    	quelle.close();
    	system("pause");
    }
    

    ich hab auch schonmal versucht nur mit getline zu arbeiten und ohne den >>-Operator aber da ging nochmehr schief.

    Ich hoffe ihr könnt mir helfen.



  • int main()
    

    Wieder der gleiche Professor?

    Zweitens: Schau mal ob die Klammern {} sinnvoll gesetzt sind.



  • der fehler passiert ja wenn die zeile 37 zum zweiten mal ausgeführt wird.

    dann schreibt er "@u;" in gemarkung und dann wird in jedem darauf folgendem schleifendurchlauf die variable gemarkung nicht mehr verändert. obwohl die zeile 37 bei jedem schleifendurchlauf ausgeführt werden muss.


Anmelden zum Antworten