_rtl_write

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu io.h - Index


Header-Datei

io.h

Kategorie

Eingabe-/Ausgaberoutinen

Prototyp

int _rtl_write(int handle, void *buf, unsigned len);

Beschreibung

Schreibt in eine Datei.

Anmerkung:  Diese Funktion ersetzt die Funktion _write, die veraltet ist.

_rtl_write versucht, len Bytes aus dem durch buf bezeichneten Puffer in die mit handle verknüpfte Datei zu schreiben.

Die Funktion _rtl_write kann höchstens UINT_MAX -1 Bytes schreiben (weil UINT_MAX gleichbedeutend mit -1 ist, dem Rückgabewert von _rtl_write im Fehlerfall). UINT_MAX ist in limits.h definiert. Die Funktion _rtl_write übersetzt Zeilenvorschubzeichen (LF) nicht durch die CR/LF-Kombination, weil sie alle Dateien im Binärmodus öffnet.

Wenn weniger Bytes geschrieben werden können als gefordert, sollte dies als Fehler betrachtet werden. In diesem Fall ist der Speicherplatz auf dem Datenträger wahrscheinlich erschöpft.

Bei Datenträgerdateien wird stets ab der aktuellen Position des Dateizeigers geschrieben. Bei Geräten werden die Bytes direkt an das Gerät gesendet.

Bei Dateien, die im Modus O_APPEND geöffnet werden, wird der Zeiger vor dem Schreibvorgang nicht auf das Dateiende (EOF) gesetzt.

Rückgabewert

Bei erfolgreicher Ausführung gibt _rtl_write gibt die Anzahl geschriebener Bytes zurück.

Andernfalls gibt die Funktion -1 zurück und weist der globalen Variablen errno einen der folgenden Werte zu:

EACCES

Permission denied (Zugriff verweigert)

EBADF

Bad file number (Falsche Dateinummer)



Beispiel



 #include <stdio.h>
 #include <io.h>
 #include <alloc.h>
 #include <fcntl.h>
 #include <process.h>
 #include <sys\stat.h>;
 int main(void)
 {
    void *buf;
    int handle, bytes;
    buf = malloc(200);
 /*
 Im aktuellen Verzeichnis die Datei TEST.$$$ erstellen und 200 Bytes in diese Datei schreiben. Wenn die Datei TEST.$$$ bereits vorhanden ist, wird sie überschrieben.
  */
    if ((handle = open("TEST.$$$", O_CREAT | O_WRONLY | O_BINARY,
                        S_IWRITE | S_IREAD)) == -1)
    {
       printf("Error Opening File\n");
       exit(1);
    }
    if ((bytes = _rtl_write(handle, buf, 200)) == -1) {
       printf("Write Failed.\n");
       exit(1);
    }
    printf("_rtl_write: %d bytes written.\n",bytes);
    return 0;
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

+