fputc - warum der cast?
-
Werte Forumsbesucher,
selten habe ich es mit Filesystemen zu tun, wenn, dann mit libs, die viel ohne mein Zutun machen, momentan bin ich darauf angewiesen, was die <stdio.h> hergibt und das scheint mir erschütternd wenig zu sein
. Dabei hat mich eine Sache stutzig gemacht:
fputc ( (int) c , pFile );
Wozu der cast, wenn angeblich doch nur ein byte ausgegeben werden soll?. Ist garantiert, daß auf jeder Plattform dann wirklich nur ein Byte ausgegeben wird?
Achja, und wo wir schon dabei sind, wie kann ich mittels der stdio- Funktionen ein File einfach plattmachen?
Dankeschön vorab!
-
Naja, das erste Argument von fputc() ist halt ein int. Wegen EOF.
-
Und wenn du mit plattmachen meinst, daß du nur den Inhalt der Datei löschen willst, das geht zB mit
fopen(file, "w")
.
-
Tim schrieb:
Naja, das erste Argument von fputc() ist halt ein int. Wegen EOF.
Versteh' ich immer noch nicht
Aus ebenjenen Manpages kopiert:
The fputc() function writes the byte specified by c (converted to an unsigned char) to the output stream ...
Um ein char zu schreiben, muß es zum int gecastet werden, damit es wieder zum char zurückgewandelt wird? Klingt wie die Vorschrift, einen Balkon erst wegreißen zu müssen, um die Pro- Forma- Genehmigung für den Anbau eines Balkons erhalten zu können. Haben die C- Designer etwa bei deutschen Bauverordnungen abgepinselt?
Zudem ist EOF ist ja kein Parameter, sondern ggf. der return value. Der Zwang zum int erscheint absurd, muß da nochmal nachhaken.Danke für remove, hab' ich mindestens fünfmal übersehen.
-
flamer schrieb:
Und wenn du mit plattmachen meinst, daß du nur den Inhalt der Datei löschen willst, das geht zB mit
fopen(file, "w")
.Genauso hatte ich mich beholfen
. Mein Programm erzeugt einen Sack voll temporärer Dateien, eigentlich würde es genügen, die auf diese Art klein zu machen. Mich hat dann aber doch gestört, daß das Verzeichnis so vollgekümmelt ist und einfach mal gefragt ...
-
da auf den meisten plattformen ein int schneller verarbeitet werden kann
(prozessregister) wird, werden die parameter für einige funktionen als int
übergeben z.b. auch bei memset
-
pointercrash() schrieb:
Zudem ist EOF ist ja kein Parameter, sondern ggf. der return value. Der Zwang zum int erscheint absurd, muß da nochmal nachhaken.
Stimmt, die Begründung mit EOF war albern. Die hätte bei fgetc() gepasst. Wahrscheinlich hängt es damit zusammen, dass 'a' vom Typ int ist.