Dateien schreiben mit FILE *

Hallo Leute,

Immer, wenn ich Textdateien speichere, mit FILE-pointer, kriege ich am
Ende der Datei soetwas rein geschrieben:

ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

Das ist Code 152. Dabei ist es gleich, ob ich den Text mit fprintf() oder auch mit fputc() rein schreibe.Was kann ich tun, um das zu vermeiden?

lg
Martin

Immer, wenn ich Textdateien speichere, mit FILE-pointer,
kriege ich am Ende der Datei soetwas rein
geschrieben:

ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

Was kann ich tun, um das zu vermeiden?

Ich würd sagen, so ganz ohne jegliche Information: Beseitige den Fehler aus Deinem Programm.

Ohne zu wissen, wie Dein Code aussieht, ist das doch alles Spekulation. Es könnte z.B. sein, dass Du versuchst, einen String zu schreiben, dessen Wert falsch ist.

Gruß,
-Efchen

Hallo

Immer, wenn ich Textdateien speichere, mit FILE-pointer,
kriege ich am Ende der Datei soetwas rein geschrieben

ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

Das ist Code 152. Dabei ist es gleich, ob ich den Text mit
fprintf() oder auch mit fputc() rein schreibe.Was kann ich
tun, um das zu vermeiden?

Wie Efchen schon sagte, Du könntest Dein Programm
fehlerärmer gestalten.

Ein Beispiel zur Verdeutlichung; wenn man mit Visual-C++/2005 folgendes
Programm (prog.c) übersetzt und ausführt, erhält man den erwarteten Text
und eine Sequenz von 1000 ‚Ì‘-Zeichen (Code 204) hintendran.

#include 
#include 

 int main(int argc, char \*argv[])
{
 char buffer[1024];
 FILE\*stream = fopen("test.txt", "wt");
 
 strcpy(buffer, "Das ist eine Textdatei\n");
 fwrite(buffer, 1, sizeof(buffer), stream);
 fclose(stream);

 return 0;
}

Deine „Hausaufgabe“ besteht nun darin, herauszufinden
warum das so ist :wink:

Grüße

CMБ

Hallo,

das sieht irgendwie aus als ob du vergessen hast ein Dateiendezeichen zu schreiben. Schreibe einfache ein Hex 0 als letztes Zeichenm bzw. EOF (sollte als define existieren).

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Peter,

das sieht irgendwie aus als ob du vergessen hast ein
Dateiendezeichen zu schreiben.

Volltreffer, habe ich noch nie gemacht. Höre ich zm ersten Mal.

Schreibe einfache ein Hex 0 als
letztes Zeichenm bzw. EOF (sollte als define existieren).

Gute Idee, das mache ich.
Vielen Dank an alle
lg
Martin B