Elderan
0
Hallo,
also ich bin gerade dabei, ein paar Kryptographische Algorithmen in C zu implementieren.
Jetzt stoße ich allerdings sehr schnell auf ein Problem:
Also dieser Abschnitt soll aus der Datei k.txt 8 Bytes/Buchstaben auslesen, und diese in das Array ch[0-7] speichern.
Sofern man eine Datei mit ganz vielen A's hat, funktioniert alles Wunderbar.
Das Programm kopiert ja praktisch jedes Byte aus k.txt in die Datei g.txt.
Wenn jetzt in k.txt folgendes steht:
ABCD[26]EFG
Dabei ist 26 das ASCII Zeichen Nr. 26.
Hexadezimal sieht es wie folgt aus:
4142 4344 1A45 4E44
Dabei ist 26 dieses 1A.
Starte ich jetzt das Programm, so erhalte ich als Ausgabe:
EOF bei 4: nach D
Wenn man jetzt die g.txt öffnet, so steht dort nur:
ABCD
Wie kann ich es jetzt lösen, dass das Programm mir wirklich den gesamten Text nacheinander ausliest, egal ob in dem Text ein 1A auftaucht.
Denn in der späteren verschlüsselten Datei kann es durchaus vorkommen, dass dort ein '1A' enthalten ist.
Ich benutze Dev-C++ 4.9.9.1 unter WinXP
Im Anhang ist die lesen.txt (lesen.c), dies ist nochmal das gleiche wie oben, nur etwas vereinfacht.
Und dazu die k.txt
MFG
Elderan
also ich bin gerade dabei, ein paar Kryptographische Algorithmen in C zu implementieren.
Jetzt stoße ich allerdings sehr schnell auf ein Problem:
Code:
ein= fopen("k.txt","r"); //Datei mit dem Text
aus = fopen("g.txt","w"); //Datei mit dem Geheimtext
a = 0;
ch2 = getc(ein);
while(ch2 != EOF && a == 0)
{
ch[0] = ch2;
for(i=1;i<8;i++)
{
ch[i] = getc(ein);
if(ch[i] == EOF)
{
printf("EOF bei %d: %c nach %c",i,ch[i],ch[i-1]); //Ausgeben wenn Datei zuende
break;
}
} //Ende for-Schleife
if(ch[i] == EOF) a = 1;
else ch2 = getc(ein);
//Weiterer Code zum Verschlüsseln, erstmal unwichtig
//Verschlüsselte Buchstaben speichern
fprintf(aus,"%c%c%c%c",ch[0],ch[1],ch[2],ch[3]);
fprintf(aus,"%c%c%c%c",ch[4],ch[5],ch[6],ch[7]);
}
Also dieser Abschnitt soll aus der Datei k.txt 8 Bytes/Buchstaben auslesen, und diese in das Array ch[0-7] speichern.
Sofern man eine Datei mit ganz vielen A's hat, funktioniert alles Wunderbar.
Das Programm kopiert ja praktisch jedes Byte aus k.txt in die Datei g.txt.
Wenn jetzt in k.txt folgendes steht:
ABCD[26]EFG
Dabei ist 26 das ASCII Zeichen Nr. 26.
Hexadezimal sieht es wie folgt aus:
4142 4344 1A45 4E44
Dabei ist 26 dieses 1A.
Starte ich jetzt das Programm, so erhalte ich als Ausgabe:
EOF bei 4: nach D
Wenn man jetzt die g.txt öffnet, so steht dort nur:
ABCD
Wie kann ich es jetzt lösen, dass das Programm mir wirklich den gesamten Text nacheinander ausliest, egal ob in dem Text ein 1A auftaucht.
Denn in der späteren verschlüsselten Datei kann es durchaus vorkommen, dass dort ein '1A' enthalten ist.
Ich benutze Dev-C++ 4.9.9.1 unter WinXP
Im Anhang ist die lesen.txt (lesen.c), dies ist nochmal das gleiche wie oben, nur etwas vereinfacht.
Und dazu die k.txt
MFG
Elderan