_Write
Zapisuje data do souboru.
int _write(
int fd,
const void *buffer,
unsigned int count
);
Parametry
fd
Soubor deskriptoru souboru, do kterého jsou data zapsána.buffer
Zápis dat.count
Počet bajtů.
Vrácená hodnota
Pokud je úspěšná, _write vrací počet skutečně zapsaných bajtů.Pokud se skutečné místo na disku je menší než velikost vyrovnávací paměti funkce se pokouší o zápis na disk, _write se nezdaří a není žádný obsah do vyrovnávací paměti vyprázdnění na disk.Vrácená hodnota –1 označuje chybu.Pokud jsou předány neplatné parametry, tato funkce vyvolá obsluhu neplatný parametr popsaným v Ověření parametrů.Pokud je povoleno spuštění pokračovat, vrátí funkce hodnotu -1 a errno je nastavena 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í dostatek volného místa v zařízení pro operaci. nebo EINVAL, což znamená, že buffer byl ukazatel s hodnotou null.
Viz _doserrno, kód chyby, _sys_errlist a _sys_nerr Další informace o těchto a jiných návratových kódů.
Pokud je soubor otevřen v textovém režimu, každý znak nahrazen CR – dvojice konce řádku ve výstupu.Nahrazení neovlivní vrácenou hodnotu.
Poznámky
_write Funkce zápisy count bajtů z buffer do souboru spojené s fd.Operace zápisu začíná na aktuální pozici ukazatele souboru (pokud existuje) přidružený k danému souboru.Pokud je soubor otevřen pro přidávání, začíná operace aktuální konec souboru.Po operaci zápisu ukazatel souboru je zvýšen počet skutečně zapsaných bajtů.
Při zápisu do souborů otevřených v textovém režimu, _write znak CTRL + Z považovány logické konce souboru.Při zápisu na zařízení, _write považuje znak CTRL + Z vyrovnávací paměti jako zakončení výstup.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_write |
<io.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
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 );
}