Zugriffsverletzung beim Schreiben an Position 0x5b650885
-
Hallo
Ich noch ein blutiger C++ Anfänger und habe mich an einem
Programm zur Verschlüsselung von Strings,welche dann mit ofstream
in einer .txt gespeichert werden. Nun kommt aber immer ein Fehler:Eine Ausnahme (erste Chance) bei 0x011f5c66 in PwP.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x5b650885.
Unbehandelte Ausnahme bei 0x011f5c66 in PwP.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x5b650885.Hier mal mein Code:
#include <iostream> #include <string> #include <fstream> using namespace std; int main() { string cpu[1]; cout << "geben sie ihr passwort ein! 3 Buchstaben" << endl; cin >> cpu[1]; // Verschlüsselung if (cpu[1] == "a") { cpu[1] = "b"; } if (cpu[1] == "b") { cpu[1] = "c"; } if (cpu[1] == "c") { cpu[1] = "d"; } if (cpu[1] == "d") { cpu[1] = "e"; } ofstream fout("PCD.txt"); fout << cpu[1]; system ("pause"); return 0; }
-
Array-Indices laufen in C++ von 0 bis (Größe des Arrays) - 1. Mit
string cpu[1];
ist
cpu[1]
also außerhalb des Arrays. Zugriff darauf ist undefiniert - ersetz es durch cpu[0], dann sollte es gehen.
Gibt es einen Grund, warum du überhaupt ein Array benutzt? Mit Größe 1 scheint das nicht wirklich sinnvoll.
-
Du solltest dir nachmal ansehen, was Arrays sind und wie sie verwendet werden. Du hast dort ein ein-elementiges Array angelegt (schonmal sinnlos) und greifst dann auf das zweite Element dieses Arrays zu.
-
Hallo
Danke erstmal für die schnelle Antwort
zu dem kleinen Array : Ist nur ein programm zum entwickeln einer VerschlüsselungJetzte kriege ich den Fehler:
Eine Ausnahme (erste Chance) bei 0x6ef31f68 (msvcp100d.dll) in PwP.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xcf6c42bc.
Unbehandelte Ausnahme bei 0x6ef31f68 (msvcp100d.dll) in PwP.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xcf6c42bc.
-
crashjosh schrieb:
Hallo
Danke erstmal für die schnelle Antwort
zu dem kleinen Array : Ist nur ein programm zum entwickeln einer VerschlüsselungEin ehrgeiziges Vorhaben für einen "blutigen C++ Anfänger".
Zeig doch mal den Code, den du inzwischen zusammenbekommen hast.
-
string cpu[2]; cout << "geben sie ihr passwort ein! 3 Buchstaben" << endl; cin >> cpu[2]; // Verschlüsselung if (cpu[0] == "a") { cpu[0] = "b"; } if (cpu[0] == "b") { cpu[0] = "c"; } if (cpu[0] == "c") { cpu[0] = "d"; } if (cpu[0] == "d") { cpu[0] = "e"; } ofstream fout("PCD.txt"); fout << cpu[1];
-
....
fout << cpu[2]
meinte ich ^^
-
crashjosh schrieb:
....
fout << cpu[2]
meinte ich ^^
Das Array-"Element" liegt immer noch außerhalb des Arrays. Lass am besten das ganze Array-Gebastel komplett weg und fang damit an, einzelne Strings zu verarbeiten.
-
Ok, werde ich machen aber ist schwierig die buchstaben usw in string zu verarbeiten ohne dass man auf sie zugreifen kann ....
Trotzdem vielen Dank
-
Wieso denn? Strings bieten auch Index-Zugriff, so daß du auf die einzelnen Zeichen zugreifen kannst. (du mußt nur den Unterschied zwischen String und Zeichen kennen ;))
PS: Dein Verschlüsselungsverfahren ist reichlich primitiv und nicht eindeutig
-
Caeser Verschlüsselung erstmal für den Anfang
Würde ich dann aber auch verXORen ^^
-
Cäsar habe ich schon erkannt
Dein Problem ist nur, daß du sie immer auf den selben Buchstaben anwendest (d.h. alle Buchstaben von 'a' bis 'd' werden verschlüsselt zu 'e'). Wenn du es richtig anwenden willst, dann brauchst du erstmal eine Schleife, um alle Buchstaben zu erfassen - und eine Kombination aus + und % (Modulo) für die Verschiebung.
-
Fehler:
int i; string epu[30]; string cpu[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; string gpu[] = {"b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","a"}; cin >> epu[30]; for(i = 0 ; i < 25 ; ++i) { if (epu[i] != cpu[i]) { cout << endl; } else { epu[i] = gpu[i]; } } cout << epu[i];
Also iwie mache ich etwas falsch ^^
-
string epu[30]; ... cin >> epu[30];
Wenn du diese Arrays noch größer machst, wird das Programm auch nicht besser. Bevor du hier weitermachst, solltest du als erstes ein vernünftiges Buch holen und lernen, wie du mit Strings und Arrays umgehen kannst.
(die Schleife dahinter sieht einfach nur unsinnig aus)
-
http://www.amazon.de/C-Programmieren-mit-einfachen-Beispielen/dp/3827244838/ref=sr_1_2?s=books&ie=UTF8&qid=1306532662&sr=1-2
Das hab ich durch...Gibt es vielleicht ein gutes buch zum fortführen?
-
Du solltest dir eher mal ein gutes Buch für den Anfang holen, als ein gutes zur Forsetzung.
-
Gut ist das Buch nicht gut?
Dann nenn mir ein gutes (für)den Anfang :p
-
s. FAQ: "Bücher"