c++ Code vehler. 'Y' was corrupted.



  • Hallo ich bekomme bei meinen sehr einfachen c++ code immer wieder die fehlermeldung
    "Run-Time Check Failure #2 - Stack around the variable 'Y' was corrupted."
    und dachte da ich schon lange an dem problem hänge mir jemand helfen könnte.

    // main
    //aufruf meiner funktion Readinterpolation liest txt file aus
    Readinterpol("Einlessen.txt");
    
    // funktions beschreibung Readinterpolation
    void Readinterpol(string a)
    {
    	 string line;
    	 string zahlx;
    	 string zahly;
    	 int zaehlerarray=0;
    	 double X[38];
    	 double Y[38];
    	 int var=0;
    	 int varr=0;
    	 int zähler=0;
    
    	ifstream myfile (a); // a= Einlessen.txt wurde in der main übergeben
    
    	if (myfile.is_open())
    	{
    		while ( getline (myfile,line) )
    		//wenn die jetzige zeile existiert lese ich sie in den string line ein
    		{
    			zahlx.clear();
    			 zahly.clear();
    			var=line.find("	");  //gibt das ende der x koordinate aus
    
    			zahlx=line.substr (0,var); // anfang bis leerzeile
    			varr=line.length()-var-1;
    
    			zahly=line.substr (var+1,varr); //leerzeile bis ende
    			X[zähler]= atof(zahlx.c_str());
    
    			Y[zähler]= atof(zahly.c_str());
    		//mache string zu double da aber atof nur mit c_strings geht     //mache string zu c_string und dann zu double
    
    			zähler++;
    		}
    		myfile.close();//einlesen fertig
    	}
    
    	else
    		cout<<"txt nicht gefunden oder geofnet";
    
    	WriteInterpolation (X,Y);
    }
    
    // übergeb x und y array an WriteInterpolation
    // Funktion WriteInterpolation
    void WriteInterpolation( double Bxachse[], double Psxachse[])
    {
    	int i=0;
    	int count=0;
    	ofstream aus ("Auslesen2.txt");//beginne mit auslesen
    
    	while (count!=38)
    	{
    		aus<<Bxachse[count]<<"
    		aus<<Psxachse[count]<<endl;
    
    		count++;
    	}
    	cout<< "writeInterpolation wird erreicht"<<endl;
    }
    

    am ende dieser funktion erscheint meine fehlermeldung aber ich sehe einfach das problem nicht.
    wen mir jemand helfen könnte wäre ich sehr dankbar

    Edit/Arcoth: Code-Tags ergänzt.



  • Vermutlich hat deine Datei mehr Zeilen als dein Array groß ist. Lass dir mal zähler ausgeben...



  • Problem 1: Eine Textdatei mit mehr als 38 Datenzeilen führt dazu das deine Array's X und Y überlaufen.

    Problem 2: Eine Textdatei mit 38 Leerzeilen ebeneso.

    --> Nutze für X, Y std::vector und überprüfe deine Zeilen-Eingaben, s.d. Leerzeilen übersprungen werden.


Log in to reply