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