Run-Time Check Failure #2 - Stack around the variable 'gleich' was corrupted.

ProgFreak

Mitglied
Hallo!

Ich schreibe gerade an einem Programm, da tauchte ein Fehler auf der mir überhaupt nichts sagt:

Run-Time Check Failure #2 - Stack around the variable 'gleich' was corrupted.

Den Quellcode gibts hier:

void C_Reihe(){

int Anzahl = 0;
char gleich[1];
do{
int i = system("cls");

if (i!=0) { //Überprüfung

Farbe(28);
cerr << "ERROR 1: Fehler bei Loeschen der Konsole" <<endl;
fflush(stdin);
cin.ignore();
return;
}

Farbe(26);

cout <<endl <<endl;

cout << " Bitte geben Sie die Anzahl der in Reihe zu schaltenden Kondenstoren ein: ";
cin >> Anzahl;
cout << endl;
fflush(stdin);
if(Anzahl < 0){



}else if(Anzahl = 0){

Farbe(28);
cerr << "ERROR 4: Vorgang wird beendet" <<endl;
fflush(stdin);
cin.ignore();
return;
}

cout <<" Haben alle Kondensatoren die selbe Kapazität [J | N]?";
cin >> gleich;


}while(Anzahl < 0 && (strcmp(gleich,"J") == 0 || strcmp(gleich,"N") == 0 ));


}

Wodran liegt das, dass ich den Fehler bekomme?`

Vielen Dank

ProgFreak
 
moin


Deklariere gleich mal so:
Code:
char gleich[2];
Und liess dir ein bischen Theorie zu String durch, dann erzähl mir warum das so geht :) ;)


mfg
umbrasaxum
 
hmmm...du hast recht so funktioniert es. Allerdings weis ich nicht wieso!

in gleich[0] steht entweder J oder N
und in gleich[1] steht dann dieses /0
Was ist dadran falsch ?

Ich muss mich schon wieder bei dir bedanken, dass du mir hilfst :)
 
moin


Da du anscheinend lesefaul bist erklär ichs dir kurz:
Wenn du die Variable per "char gleich[1];! deklarierst kann sie EIN Zeichen aufnehmen.
Ein J plus das '\0' sind schon ZWEI Zeichen! Die Fehlermeldung sagt nur das mehr abgespeichert werden sollte als Speicher reserviert ist.

Das Problem hättest du nciht wenn du mit einzelnen Zeichen statt mit Strings arbeiten würdest, aber das erklär ich dir jetzt nicht. Lesen bildet!


mfg
umbrasaxum
 
okayy okay! tschuldigung wollt dir nicht auf die nerven gehen

ich schnapp mir heut mein dickes c++-kompendium und lern es auswendig ;-)

trotzdem dickes danke schön :) :)
 
moin


Gern geschehen!
Anstatt dir aber ein dickes Buch durchzulesen, kannst dir mal Volkards C++ Kurs angucken der ist einfach und kurz gehalten.
Such in google mal nach "Volkard".


mfg
umbrasaxum
 

Neue Beiträge

Zurück