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 dankbarEdit/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.