Verschlüsslungs Programm Funktioniert nicht richtig C++

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verschlüsslungs Programm Funktioniert nicht richtig C++

    Ich hab ein problem mit einem Programm das ich geschrieben hab bin ein Blutiger anfänger vllt kann mir wer Helfen(ist mein erster Thread hier;)
    Ich hab ein problem mit einem Programm das ich geschrieben hab bin ein Blutiger anfänger vllt kann mir wer Helfen(ist mein erster Thread hier;)

    C-Quellcode

    1. [syntax="cpp"]
    2. #include <fstream>
    3. #include <iostream>
    4. using namespace std;
    5. int main(int argc, char *argv[]){
    6. string text;
    7. fstream f;
    8. f.open("text.txt", ios::out);
    9. f.close();
    10. char auswahl;
    11. char exit1;
    12. char exit2;
    13. char textwahl;
    14. char schluesselcode;
    15. mark1:;
    16. cout << "Text Verschluesseln(1)" <<endl;
    17. cout << "Text Entschluesseln(2)" <<endl;
    18. cin >> auswahl;
    19. switch (auswahl)
    20. {
    21. mark2:;
    22. case ('1'):
    23. cout << "Sie haben die 1 fuer Verschluesseln gedrueckt, wollen sie fortfahren?(J/N)" <<endl;
    24. cin >> exit1;
    25. switch (exit1)
    26. {
    27. case('N'):
    28. case('n'):
    29. cout << "Abbrechen" <<endl;
    30. goto mark1;
    31. break;
    32. default:
    33. cout << "Falsche eingabe";
    34. goto mark2;
    35. break;
    36. case('J'):
    37. case('j'):
    38. f << endl;
    39. f.close();
    40. cout << "Fuegen sie in dieses Dokument ihren Text ein(maximal 512 zeichen)" <<endl;
    41. cout << "und geben sie nun einen 4 Stelliges Passwort ein"<<endl;
    42. mark3:;
    43. cin >> schluesselcode;
    44. cin.get();
    45. float schluesselcodeedit;
    46. int tausend =1000;
    47. int eins =1;
    48. char a;
    49. schluesselcode/=tausend%=eins=schluesselcodeedit;
    50. if (schluesselcodeedit==1)
    51. {
    52. fstream f;
    53. char cstring[1024];
    54. f.open(argv[1], ios::in);
    55. while (!f.eof())
    56. {
    57. f.getline(cstring, sizeof(cstring));
    58. char *a;
    59. while((a = strchr(cstring, ' '))!=NULL)*a = '_';
    60. char *c;
    61. while((c = strchr(cstring, 'A'))!=NULL)*c = '1,';
    62. char *b;
    63. while((b = strchr(cstring, 'B'))!=NULL)*b = '2,';
    64. }
    65. f.close();
    66. f << cstring;
    67. }
    68. else{
    69. cout << "Das war Nicht Vierstellig" <<endl;
    70. cin.get();
    71. cin.get();
    72. goto mark3;
    73. }
    74. }
    75. }
    76. return.0;
    77. getchar();
    78. }
    79. [/syntax]
    Alles anzeigen

    Ist noch nicht ganz fertig sollte aber eigentlich in einem txt Dokument was vorher vom Programm erstellt wird aus dem eingefügten text die A's durch 1, B durch 2, und die Leerzeichen durch einen Unterstrich ersetzen stattdessen kann die .exe Datei nicht mehr ausgeführt werden nachdem das Programm bei Zeile 66 ist. Auserdem sind beim Compilieren noch ein paar Fehler auf getreten:
    In function `int main(int, char**)':
    65 [Warning] converting to `int' from `float'

    84:63 [Warning] multi-character character constant

    86:63 [Warning] multi-character character constant

    231 [Warning] converting to `int' from `double'

    wäre nett wenn ihr mir helfen könntet
  • Okay, blutiger Anfänger ;)

    Hab den Quelltext nur überflogen.
    Irgend etwas ist bei deiner Quelltextformatierung schief gelaufen. Versuche das in den Griff zu bekommen, dann kann man den Quelltext meist leichter lesen und verstehen.

    Die Zeilennummern des Quelltextes und die der Fehlermeldungen passen nicht zueinander.

    Dann Zeile 9 öffnest du eine Datei um die sofort wieder zu schliessen? Warum nicht eine Aktion mit der Datei?
    Dann sind da noch weitere Ungereimtheiten bei deinem Dateihandling.
    Kann auch sei das ich mit deinem goto - Gefrickel den Überblick verloren habe. Statt des goto gehen da auch normale Schleifen.
    Packe nicht den ganzen Quelltext unter main - lagere den in Funktionen aus. Z.B. einmal Menu und dann Verschlüsselung.

    Dann mischt du auch noch C und Cpp wahllos. Wenn du C++ programmieren möchtest, nimm auch möglichst nur C++ String-Funktionen.

    Hoffe ich habe dich jetzt nicht verschreckt :D

    Nachtrag: welche IDE mit welchem Compiler nutzt du?

    MfG bcc-fan

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von bcc-fan ()

  • Danke für die Antwort das mit den Zeilen ist mir grad auch aufgefallen, ich hatte einige herauskommentierte befehle weggelassen wegen der Übersichtlichkeit. ;)
    Ich benutze Dev-C++ 4.9.9.2
    Das mit dem auslagern der Funktionen werde ich machen ist dann bestimmt einfacher zu lesen :D
    Das ich C und C++ Vermisch habe war mir garnicht bewusst ich hab ein kleines Vorwissen von C++ durch Tutorials und hab die anderen befehle gegoogled
    muss wohl irgendwie falsche Informationen bekommen haben:)
    Und nein du hast mich nicht verschreckt:D

    Nachtrag: Wäre eine andere IDE besser?

    mfg Lennart
  • Die Version des DEV die du hast der 4.9.9.2 ist ja schon ein wenig älter und der Compiler da drunter wahrscheinlich der alte MinGW 3.4.2 oder 3.4.5.

    Hier jemand der versucht das mit aktuellen Mitteln weiter zu entwickeln:
    orwelldevcpp.blogspot.de/
    Oder eine andere Gruppe:
    codeblocks.org/
    Wenn du Code::Blocks 10.05 mit Compiler MinGW 4.4.1 lädst aktualisiere den sofort :!: Beispiel hier:
    tdm-gcc.tdragon.net/

    Es gibt noch weitere IDE Projekte.

    Einfachen Code schreibe ich meist auf dem Editor SciTE. Auch aus dem kann man Compiler ansteuern.
    Wenn ich mehr Komfort will z.Z. Code::Blocks10.05 mit MinGW 4.6.1 oder auch 4.7.0. Nicht alle MinGW 4.7.0 sind für Anfänger einfach zu installieren. Der MinGW aus dem Link oben sollte relativ einfach an laufen zu bekommen sein.

    cstring ( Zeile 58 ) wird schon in den String-Headern definiert - keine gute Idee einen C-String so zu benennen.

    MfG bcc-fan

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von bcc-fan ()

  • Hab mal schnell etwas zusammen genagelt:

    Quellcode

    1. // zum testen einfache Datei erstellen ;)
    2. #include <fstream>
    3. #include <iostream>
    4. #include <string>
    5. void codieren(std::string txt)
    6. {
    7. std::cout << "Fuegen sie in dieses Dokument ihren Text ein(maximal 512 zeichen)\n"; // stand halt noch im Editor ;)
    8. std::cout << "und geben sie nun einen 4 Stelliges Passwort ein"<<std::endl;
    9. std::ifstream ifstr(txt); // oeffnet Datei
    10. std::string buffer;
    11. while(std::getline(ifstr, buffer))
    12. std::cout << "Zeichen: " << buffer.length() << std::endl; // keine Ahnung ob diese Passage hier benötigt wird
    13. std::cout << "Dateiinhalt: " << buffer << std::endl;
    14. // hier das mit dem Codieren ergänzen ...
    15. }
    16. int main(int argc, char *argv[])
    17. {
    18. char auswahl;
    19. do
    20. {
    21. std::cout << "c = Text Verschluesseln(1)\n";
    22. std::cout << "d = Text Entschluesseln(2)\n";
    23. std::cout << "q = Programm beenden" <<std::endl;
    24. std::cin >> auswahl;
    25. switch (auswahl)
    26. {
    27. case ('c'):
    28. if(argc)
    29. codieren(argv[1]);
    30. break;
    31. case ('d'):
    32. if(argc)
    33. // decodieren(argv[1]); // [1] oder [2] ?
    34. break;
    35. case('Q'):
    36. case('q'):
    37. auswahl = 'q';
    38. break;
    39. default:
    40. std::cout << "Falsche eingabe";
    41. }
    42. }
    43. while(auswahl != 'q');
    44. }
    Alles anzeigen


    Ist nur damit man den C++ Stil erkennen kann. Ist nicht perfekt. Ich würde noch daran schrauben. Sollte aber schon laufen.
    Wenn du dich über einige "fehlende" Zeilen wunderst, fragen warum die da in C++ nicht stehen 8)

    MfG bcc-fan

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von bcc-fan ()