Ich schreibe ein Schlachtschiffspiel. Ich habe die Board-Layouts funktioniert und die Computer nach dem Zufallsprinzip Schiffe erzeugt. Jetzt arbeite ich an dieser Methode, um den Benutzer aufzufordern, Koordinaten für die Schiffe einzugeben. Wenn ich das Programm starte, kann ich 5 Schiffe eingeben. Wenn ich das 6. Schiff betrete, gibt es mir diesen Fehler.
Der Stapel um die Variable location wurde beschädigt.
Ich habe online nach Antworten gesucht und nichts Exklusives gefunden.
Jede Hilfe wäre willkommen.
Sie fordern die Speicheradresse von location
array für Ihren Benutzer an. Sie sollten die Standortindizes separat erfragen:
Beachten Sie int location[2];
, da ein Array der Größe 1 nur ein Element enthalten kann. Ich habe auch den Elementtyp in int geändert. Das Lesen von Zeichen von der Konsole führt zu ASCII-Werten, die wahrscheinlich nicht Ihren Vorstellungen entsprechen.
%Vor%
location
ist ein Array von einem char
. Dies kann nicht erfolgreich sein, da, wenn Sie von einem Stream in ein char
-Array lesen, ein Null-Terminator hinzugefügt werden muss (was ein Zeichen benötigt). Sie werden die Grenzen des Arrays unweigerlich überschreiten.
Sie können std::string
verwenden, um Probleme mit dem Pufferüberlauf zu vermeiden:
Beachten Sie auch, dass Sie die Zeichenfolgendarstellungen der Zahlen wahrscheinlich in numerische Werte konvertieren müssen. Sie können dies einfach tun, indem Sie aus dem Stream stattdessen zwei int
-Objekte lesen:
Tags und Links c++