Sdílet prostřednictvím


_write

Zapisuje data do souboru.

int _write(    int fd,    const void *buffer,    unsigned int count  );

Parametry

  • fd
    Soubor popisovač souboru, do nějž data zapsána.

  • buffer
    Data, která má být proveden zápis.

  • count
    Počet bajtů.

Vrácená hodnota

V případě úspěšného ověření _write vrátí počet skutečně zapsaných bajtů.Pokud skutečný zbývající místo na disku je menší než velikost vyrovnávací paměti při pokusu o zápis na disk, je v funkce _write selže a nikoli vyprázdnění žádný obsah do vyrovnávací paměti na disk.Návratová hodnota -1 označuje chybu.Pokud jsou předány neplatné parametry, tato funkce vyvolá obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametru.Pokud je povoleno spuštění chcete-li pokračovat, funkce vrátí hodnotu -1 a errno je nastaven na jednu ze tří hodnot: EBADF, což znamená popisovač souboru je neplatný nebo soubor není otevřen pro zápis; ENOSPC, což znamená, že není k dispozici dostatek volného místa v zařízení pro operaci. nebo EINVAL, což znamená, že buffer bylo ukazatel s hodnotou null, nebo která odlišným count bajtů byla předána má být zapsán do souboru v režimu Unicode.

Další informace o těchto a dalších návratové kódy naleznete v tématu errno, _doserrno, _sys_errlist, and _sys_nerr.

Pokud bude soubor je otevřen v režimu textu, každý znak konce řádku je nahrazen návrat – dvojice konce řádku ve výstupu.Náhrada nemá vliv na návratovou hodnotu.

Při otevření souboru v režimu překladu Unicode – například pokud fd otevření pomocí _open nebo _sopen a režimu parametr, který obsahuje _O_WTEXT, _O_U16TEXT, nebo _O_U8TEXT, nebo pokud je otevřen pomocí fopen a režimu parametr, který zahrnuje ccs=UNICODE, ccs=UTF-16LE, nebo ccs=UTF-8, nebo je-li režim se změní na režim překladu Unicode pomocí _setmode–buffer interpretována jako ukazatel na pole wchar_t , který obsahuje UTF-16 data.Pokus o zápis lichý počet bajtů v tomto režimu způsobí, že chyba ověření parametru.

Poznámky

_write Funkce zápisy count bajtů z buffer do souboru přidružený k fd.Operace zápisu začíná na aktuální pozici ukazatele souboru (pokud existuje) přidružené k danému souboru.Pokud soubor je otevřen pro přidávání, zahájí operaci na aktuální konec souboru.Po provedení operace zápisu ukazatel souboru je zvýšit počet skutečně zapsaných bajtů.

Při zápisu do otevřít v režimu textových souborů _write znak CTRL + Z považuje za logický konec souboru.Při zápisu do zařízení, _write považuje CTRL + Z znak ve vyrovnávací paměti jako ukončení výstupu.

Požadavky

Rutina

Požadovaný hlavičkový soubor

_write

< io.h >

Další informace o kompatibilitě, naleznete v části Kompatibilita.

Příklad

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

Viz také

Referenční dokumentace

I/O nízké úrovně

fwrite

_open, _wopen

_read

_setmode