datei öffnen und bearbeiten problematik



  • Hallo und danke an alle die sich die zeit nehmen...

    Hier erst mal ein bisschen Quelltext

    void msvcodedmenue() {
    
              // Variablendeffinition -belegung
                 int key;             // Variable fuer den msv - key
                 int flag;            // Entscheidungsvariable 
                 char pfad[255];      // Pfadangabe
    
                 // Zeiger auf Datei
                    FILE *in;         // Zeiger auf Datei in die der Cheffrierte text geschrieben wird
                    FILE *out;        // Zeiger auf Datei in der sich der Klartext befindet bzw. der msv key
    
              // Schluessel ermitteln
                 do {
                     // Entscheidungsvariable vordeffinieren 
                        flag = 0;
                     // Konsole leeren 
                        clearconsole();
                     // Abfrage wo die key-datei ist
                        printf("Geben sie bitte den Pfad, in dem sich der msv - Schluessel befindet, an!\n\n");
                     // Eingabe von Nutzer
                        printf("> ");
                        scanf("%254[^\n]", &pfad);
                     // Datei oeffnen und key herausschreiben 
                        out = fopen(pfad,"r");
                        // Oeffnen
                            if (out==NULL) {        // Fehlerhafter pfad, erneute pfad abfrage
                               printf("Die Datei <%s> konnte nicht geoffnet werden!", pfad);
                               //getchar();
                               flag = 1;        
                            } else {                // Datei konnte geoffnet werden
                         // Schluessel lesen 
                               // Herauslesen des schluessels
                                  fscanf(out,"%i",&key);  
                               // Wurde ein korekter schluessel gelesen?
                                  if ((key>0)&&(key<256)) {     // ja
                                     printf("\n\nDer schluessel wurde erfolgreich ermittelt und lautet: %i",key);
                                     //getchar();
                                  } else {                      //nein
                                     printf("Die Datei <%s> enthielt keinen gueltigen schluessel fuer eine msv!",pfad);
                                     //getchar();
                                     flag = 1;
                                  }
                                  // Datei schliesen
                                     fclose(out);      
                            }
                 } while(flag==1);      
    
              // Klartext ermitteln 
                 do {   
                     // Entscheidungsvariable vordeffinieren 
                        flag = 0;
                     // Konsole leeren 
                        clearconsole();
                     // Abfragen wo die Klartextdatei ist
                        printf("Geben sie bitte den Pfad, in dem sich der klartext befindet, an!\n\n");
                     // Eingabe von Nutzer
                        printf("> ");
                        scanf("%254[^\n]", &pfad);
                     // Datei oeffnen 
                        out = fopen(pfad,"r");
                     // Ist die Datei vorhanden
                        if (out==NULL) {       // Fehler
                           printf("Die Datei <%s> konnte nicht geoffnet werden!", pfad);
                           //getchar();
                           flag = 1;
                        }
                 } while(flag==1);
    
              // Datei fuer Chiffrierten Text erstellen
                 do {
                     // Entscheidungsvariable vordeffinieren 
                        flag = 0;
                     // Konsole leeren 
                        clearconsole();
                     // Abfragen wo die coded Datei gespeichert werden soll
                        printf("Geben sie bitte den Pfad, in dem der codierte Text gespeichert wird, an!\n\n");
                     // Eingabe von Nutzer
                        printf("> ");
                        scanf("%254[^\n]", &pfad);
                     // Datei oeffnen
                        in = fopen(pfad,"w");
                     // Datei erstellen
                        if (in==NULL) {       // Fehler
                           printf("Die Datei <%s> konnte nicht erstellt werden!", pfad);
                           //getchar();
                           flag = 1;
                        }
                 } while(flag==1);
              // Alle benoetigten Daten fuer die msv wurden bereitgestellt --> Aufrufen der msccoded() - Funktion welche die 
              // verschluesselung abarbeitet
                 msvcoded(key, in, out);
              // Datein schliessen
                 fclose(in);
                 fclose(out);
         }
    

    Zu meiner Problematik: Ich möchte eigentlich als erstes das der Nutzer eine Datei angibt in der sich ein int wert zwischen 1 und 256 befindet dieser wert soll dann in der Variablen key hinterlegt werden anschließend soll er eine Datei angeben in der sich ein text befindet. Diese wird dann geöffnet, zu letzt soll er ein Datei angeben in die der chiffrierte text geschrieben wird. Ihr seht das ganze läuft auf eine Verschlüsselung hinaus. Mein Problem ist nun folgendes wenn ich das Programm durchlaufen lasse komme ich nicht mal bis zur zweiten Eingabe, finde jetzt aber auch keinen Fehler. Hoffe mir kann jemand helfen, schon mal danke an alle.



  • In Zeile 23 liest du alles ein, bis auf das \n.
    Das \n steht demnach noch im Eingabepuffer.

    In Zeile 58 heißt es wieder: Alles einlesen bis auf \n.
    Da das \n noch im Eingabepuffer steht, passiert das nicht viel.

    Du musst erst die Zeichen aus dem Puffer auslesen.
    Guckst du: http://www.c-plusplus.net/forum/p1146014#1146014



  • ok kliengt logisch aber wie lösch ich jetzt den eingabepuffer?



  • hat sich erledigt^^

    // Eingabepuffer loeschen
    while (getchar() != '\n' && getchar() != EOF);



  • Hans Eric Müller schrieb:

    ok kliengt logisch aber wie lösch ich jetzt den eingabepuffer?

    Wer lesen kann, ist klar im Vorteil. Das steht so schön in dem Link.


Anmelden zum Antworten