Caesar Verschlüsselung



  • Hallo

    Ich hab grad ein Problem mit dem char*

    char* text;
    		text = "Hallo Welt";
    		int length = strlen(text);
    		std::cout << text << std::endl << length << std::endl;
    		for(int i = 0; i < length; ++i)
                      {
    			text[i] += 5;
    		}
    		std::cout << text << std::endl;
    

    Da krieg ich eine Zugriffsverletzung und der debugger stoppt in Zeile sieben.
    Warum kann ich nicht auf den text zugreifen? Ausgeben funktioniert übrigens.

    Steh echt grad aufm Schlauch



  • Weil das String-Literal nur read-only ist.

    du musst

    char text[] = "Hallo Welt";

    schreiben



  • *patsch*

    Danke wer auch immer du bist



  • wie wärs mit

    std::string text = "Hallo Welt";
            std::cout << text << std::endl;
            std::cout << text.length() << std::endl;
            for(int i = 0; i < text.length();i++)
            {
                text[i] += 5;
            }
            std::cout << text << std::endl;
    

    nicht getestet.



  • Dir ist bewusst das du gegen Ende des Alphabets probleme bekommst? 😉



  • David_pb schrieb:

    Dir ist bewusst das du gegen Ende des Alphabets probleme bekommst? 😉

    Und bei "Nicht-ASCII-Zeichensätzen" auch. Ich würde da noch einen "Layer einziehen":

    char getShifted(char old, unsigned int shift) {
        static const string map("ABCDEFGHIJKLMNOPQRSTUVWXYZabc..... 
    // Hier ganzes Alphabet mit Sonder- und Satzzeichen
        return map[(shift + map.getpos(old)) % map.length()];
    }
    

    ("getpos()" ist Pseudocode !)
    Statt jedesmal im string zu suchen kann man natürlich noch eine "Positionsmap anlegen .... muss aber darauf achten, dass einem dabei die Plattformunabhängigkeit nicht wieder durch eine vermeintlich clevere Idee flöten geht.

    Gruß,

    Simon2.



  • Jaja is mir alles klar.
    Ging nur drum, auf die Schnelle den Code vom Matheforum mal in alle Richtungen zu verschieben, hat aber keinen Sinn gemacht. Auch ohne die Sonderzeichen :p

    Kennt jemand Diabolus von Dan Brown?
    So 'nen Computer müsst man haben..


Anmelden zum Antworten