mehrere long int wert nacheinander in eine Datei schreiben
-
Hi hab folgendes Problem ich habe eine datei in die ich nacheinander mithilfe einer schleife long int werte eintragen möchte welche durch ein lerzeichen getrennt wird das ganze haut nur nicht ganz so hin wie ich es möchte.
Hier mal der Code:
void funktion(FILE *in){ long int ch; . . . do { // hier wird die variable ch erzeugt // irgendwann wird das flag auf 1 gesetzt und die // schleife wird verlassen // Schreiben in die Datei in, hier ist das problem fprintf(in, "%li ",ch); } while (flag == 1);
-
Hast du den Rückgabewert von fopen geprüft?
in
ist ein seltsamer Bezeichner für eine Datei in die man schreibt.
-
Die Datei ist auf jedenfall offen und wird auch beschrieben aber das Problem ist das sie nicht so beschrieben wird wie sie soll es steht dann nur eine zahl drinnen
-
Da sollte es doch keine Problem sein zur Demo hier ein komplettes Programm mit weniger als 50 Zeilen zu erstellen und hier zu zeigen, oder
Am besten mit präziser Beschreibung des Fehlers - Zeilennummer, was sagt der Compiler oder was ist anders als erwartet?MfG f.-th.
-
koni1988 schrieb:
do { // irgendwann wird das flag auf 1 gesetzt und die // schleife wird verlassen } while (flag == 1);
Vielleicht solltest du dir nochmal anschauen, wie eine do-while-Schleife funktioniert.
-
Also ich kriegs grad nicht gebacken, hocke wahrscheinlich zu lange dran und stell mich grad zu dumm an.
Hier mal der ganze relevante code:
// hier der Programmausschnit Programmausschnitt wo die problemfunktion geöffnet wird . . . do { // Entscheidungsvariable vordeffinieren flag = 0; // Konsole leeren clearconsole(); // Abfrage wo der Klartext ist printf("Geben sie bitte den Pfad, in dem sich der Cheffrierte Text befindet, an!\n\n"); // Eingabe von Nutzer printf("> "); scanf("%254[^\n]", &pfad); // Ist die Datei vorhanden, Oeffnen der Datei zum lesen in = fopen(pfad,"w"); if (in==NULL) { // Datei nicht vorhanden printf("Die Datei <%s> konnte nicht geoffnet werden!", pfad); getchar(); flag = 1; } // Eingabepuffer loeschen while (getchar() != '\n' && getchar() != EOF); } while (flag==1); // Aufruf der rsacoded() funktion rsacoded(publickey, in, out); . . . // Hier die Funktion welche die Probleme macht void rsacoded(publickey *publickey, FILE *in, FILE *out){ // Variablendeffinition -belegung int flag = 0; // Entscheidungsvariable int zs1, zs2; // Zwischenspeicher fuer das einlesen des Klartextes long int k; // Variable zur hinterlegung der zusammengelegten zs1 und zs2 long int ch; // Variable fuer den Cheffrierten text char c; // Zwischenspeicher fuer char // Schleife zur abarbeitung der Verschluesselung do { // Herauslesen von zwei zeichen aus der Klartext Datei // erstes zeichen c = fgetc(out); // Ist Datei ende erreicht if (c != EOF){ // Nein zs1 = c; // zweites zeichen c = fgetc(out); // ist Datei ende erreicht if (c != EOF){ // Nein zs2 = c; } else { zs2 = 32; // Lerzeichen flag = 1; } } else { flag = 1; } // Zusammfuegen zu einen Long Int Wert k = zs1*1000+zs2; // Start der Codierung ch = moduloexponentiation(k, publickey->s, publickey->k); // Schreiben in die Datei in fprintf(in, "%li ",ch); } while (flag == 1); } // Und hier die Funktion welche noch aufgerufen wird long int moduloexponentiation(long int b, long int e, long int n){ // Variablendeffinition - belegung long int r = 1; // Lets go while (e != 0){ if (e % 2 == 0) { // gerade b = (b*b)%n; e = e/2; } else { // ungerade e = e - 1; r = (r*b)%n; } } // Rueckgabewert return r; }
So schon mal danke für die zeit die sich jeder nimmt
-
Vielleicht solltest du dir nochmal anschauen, wie eine do-while-Schleife funktioniert.
Tus einfach, es tut nicht weh.
-
Dir wurde weiter oben nahegelegt, die do...while-Schleife nochmal kurz an Deinem inneren Auge vorbeiziehen zu lassen...
Tue Aktion a, solange Bedingung b erfüllt ist...
Solange flag gleich 1 ist, soll die Schleife laufen, laut Deiner Anweisung.
Du setzt flag == 1 bei einem Fehler, ansonsten bleibt flag 0. Deshalb wird die Schleife zur einfachen Anweisung und die Bedingung flag == 1 nicht erfüllt. Deshalb auch nur 1 Wert in der Datei...
-
oh nein wie peinlich so ein dummer fehler es tut so weh^^ ok danke an alle