C: EOF als Zeichen in Datei

Hallo,
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
 
hi!

du musst zeile nr 1 verändern!!!

original:
ein= fopen("k.txt","r"); //Datei mit dem Text

so muss es sein:
ein= fopen("k.txt","rb"); //Datei mit dem Text

wenn man ein b noch hinzufügt findet keine interpretation der zeichen statt, also werden auch end of file zeichen nicht als diese interpretiert, sondern einfach eingelesen!

greetz felikz
 
Zurück
Oben