_write
Schreibt Daten in eine Datei.
int _write(
int fd,
const void *buffer,
unsigned int count
);
Parameter
fd
Dateideskriptor der Datei, in den Daten geschrieben wird.buffer
Die zu schreibenden Daten.count
Anzahl von Bytes.
Rückgabewert
Bei Erfolg gibt _write die Anzahl der geschriebenen Bytes, die tatsächlich zurückgegeben werden.Wenn die tatsächlichen Speicherplatz auf dem Datenträger wird, kleiner ist als die Größe des Puffers die Funktion versucht, auf den Datenträger zu schreiben, schlagen bei _write und leert eine der Inhalt des Puffers nicht auf dem Datenträger.Ein Rückgabewert von 1 gibt einen Fehler an.Wenn nicht zulässig, werden Aufrufe dieser Funktion der Parameter für ungültige Parameter übergeben, wie in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, gibt die Funktion -1 zurück. errno wird durch einen von drei Werten festgelegt: EBADF, der den Dateideskriptor heißt die Datei ist ungültig oder nicht zum Schreiben geöffnet ist. ENOSPC, das heißt es ist nicht genügend Speicherplatz auf dem Gerät für den Vorgang verbleibt. EINVAL, oder es daher darauf hinweisen, dass buffer ein NULL-Zeiger ist.
Weitere Informationen finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr Weitere Informationen über diese und andere Rückgabecodes.
Wenn die Datei im Textmodus geöffnet wird, wird jedes Wagenrücklauf/Zeilenvorschub-Paar durch ein Zeilenvorschubzeichen in der Ausgabe ersetzt.Die Ersetzung wirkt sich nicht auf den Rückgabewert.
Hinweise
Die _write-Funktion schreibt count Bytes aus buffer in die Datei, die mit fdzugeordnet ist.Der Schreibvorgang beginnt dabei an der aktuellen Position des Dateizeigers (sofern vorhanden) in der angegebenen Datei.Wenn die Datei nur zum Anhängen geöffnet ist, wird der Vorgang zum aktuellen Ende der Datei.Nach dem Schreibvorgang wird der Dateizeiger durch die Anzahl der Bytes, die tatsächlich geschrieben wird.
Beim Schreiben in Dateien, die im Textmodus geöffnet sind, behandelt _write ein STRG+Z-Zeichen als logische Dateiende.Beim Schreiben auf einem Gerät, behandelt _write ein STRG+Z-Zeichen im Puffer als Ausgabe abschlusszeichen.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_write |
<io.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt__write.c
//
// This program opens a file for output and uses _write to write
// some bytes to the file.
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <share.h>
char buffer[] = "This is a test of '_write' function";
int main( void )
{
int fileHandle = 0;
unsigned bytesWritten = 0;
if ( _sopen_s(&fileHandle, "write.o", _O_RDWR | _O_CREAT,
_SH_DENYNO, _S_IREAD | _S_IWRITE) )
return -1;
if (( bytesWritten = _write( fileHandle, buffer, sizeof( buffer ))) == -1 )
{
switch(errno)
{
case EBADF:
perror("Bad file descriptor!");
break;
case ENOSPC:
perror("No space left on device!");
break;
case EINVAL:
perror("Invalid parameter: buffer was NULL!");
break;
default:
// An unrelated error occured
perror("Unexpected error!");
}
}
else
{
printf_s( "Wrote %u bytes to file.\n", bytesWritten );
}
_close( fileHandle );
}