Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » C++ Programm stürzt unregelmäßig ab

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.05.2015, 14:51 Uhr
~derEine
Gast


Hallo.
Ich habe angefangen mich in C++ einzuarbeiten, bin aber noch ein Anfänger.
Habe mich an einer im Internet gefundenen Übungsaufgabe probiert, in der es darum geht einen string einzulesen, und diesen nach der Cäsar Verschlüsselung zu codieren.

Soweit hat auch alles funktionert. Leider stürzt das Programm nach dem ausführen unregelmäßig ab. Dies geschieht immer nachdem das Programm komplett durchlaufen ist. Also manchmal wird es normal beendet und manchmal kommt am Ende eine Windows Fehlermeldung, obwohl das Programm durchlaufen wurde.

hier mal mein Programmcode:


C++:
#include <iostream>
#include <stdio.h>
#include <string>

using namespace std;

int main()
{

string text, alpha_neu, text_neu;
string alpha = "abcdefghijklmnopqrstuvwxyz";
int j, k, siz, i, sls, sl;

cout << "Geben Sie den zu kodierenden Code ohne Leerzeile ein: ";
cin  >> text;

cout << "Geben Sie den Schlüssel ein: ";
cin  >> sl;

    sls = sl;

    for (i=0; i<=25; i++)
    {
       if (i<=sl-1)
       {
        alpha_neu[i] = alpha[26-sls];
        sls--;
       }
       else
       alpha_neu[i] = alpha[i - sl];

       cout << alpha_neu[i] ;
    }

   siz =  text.length();
   text_neu = text;
   cout << "\n" << siz;

   for (j=0; j<=siz; j++)
{
    for (k=0; k<=25; k++)
     {
        if (text[j] == alpha[k])
        {
            text_neu[j] = alpha_neu[k];

        }
     }
}

cout << "\n\n" << "Aus: " << text << " wird: " << text_neu;

return 0;
}



Ich hoffe Ihr könnt mein Problem nachvollziehen und habt vielleicht eine Ahnung woran das liegen könnte.

Schon mal vielen Dank im voraus

Dieser Post wurde am 09.05.2015 um 10:12 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.05.2015, 12:43 Uhr
~derEine
Gast


hab den fehler gefunden.
Wenn ich vor der ersten for-Schleife noch alpha_neu = alpha eingebe, dann funktioniert es ohne abzustürzen.
Ich vermute, dass sonst nicht genug Speicher für alpha_neu zugewiesen wird.
Warum es manchmal funktioniert hat und manchmal nicht kann ich mir trotzdem nicht erklären.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.08.2015, 21:56 Uhr
joni



Das hat nichts mit zu wenig Speicher zu tun.

Du greifst in deiner Schleife mehrmals mit der Anweisung

alpha_neu[i] = alpha[26-sls];

auf eine Variable des Typs string zu, die zu diesem Zeitpunkt aber noch ein Leerstring ist.

Der String ist also 0 Zeichen lang !!!

Und du schreibst einfach ein paar Bytes weiter in den Speicher, der u.U. einer anderen Variablen gehört !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: