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.