Freigeben über


_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 );
}
  

Siehe auch

Referenz

E/A auf niedriger Ebene

fwrite

_open, _wopen

_read