_write
Zapisuje dane w pliku.
int _write( int fd, const void *buffer, unsigned int count );
Parametry
fd
Deskryptor pliku pliku, w którym zapisywane są dane.buffer
Dane do zapisania.count
Liczba bajtów.
Wartość zwracana
Jeśli to się powiedzie, _write zwraca liczbę bajtów zapisanych w rzeczywistości.Jeśli rzeczywista ilość miejsca na dysku jest mniejsza niż rozmiar buforu funkcji jest próby zapisu na dysku _write nie powiedzie się i nie opróżnia dowolną zawartość bufora na dysku.Zwracaną wartość -1 oznacza błąd.Jeżeli nie przekazano nieprawidłowe parametry, ta funkcja wywołuje program obsługi nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli jest dozwolone wykonywanie aby kontynuować, funkcja zwraca wartość -1 i errno jest ustawiona na jedną z następujących wartości: EBADF, co oznacza deskryptor pliku jest nieprawidłowa lub plik nie jest otwarty do zapisu; ENOSPC, co oznacza, że nie ma wystarczającej ilości miejsca pozostało na urządzeniu do przeprowadzenia operacji. lub EINVAL, co oznacza, że buffer wskaźnik null lub które nieparzysta count przekazano bajtów do zapisania plików w trybie Unicode.
Aby uzyskać więcej informacji na temat tych i innych kody powrotne, zobacz errno, _doserrno, _sys_errlist, and _sys_nerr.
Jeśli plik jest otwarty w trybie tekstu, każdy znak wysuwu wiersza zostanie zastąpiony powrotu karetki — pary wysuwu wiersza w danych wyjściowych.Zastąpienie nie ma wpływu na wartość zwracaną.
Po otwarciu pliku w trybie translacji Unicode — na przykład, jeśli fd jest otwarty za pomocą _open lub _sopen i parametr tryb, który zawiera _O_WTEXT, _O_U16TEXT, lub _O_U8TEXT, lub jeśli plik jest otwarty za pomocą fopen i parametr tryb, który zawiera ccs=UNICODE, ccs=UTF-16LE, lub ccs=UTF-8, lub jeśli tryb zostało zmienione w trybie translacji Unicode przy użyciu _setmode—buffer jest interpretowany jako wskaźnik do tablicy wchar_t zawierający UTF-16 danych.Próba zapisu nieparzysta liczba bajtów w tym trybie powoduje błąd sprawdzania poprawności parametru.
Uwagi
_write Działać zapisy count bajtów z buffer do pliku skojarzone z fd.Rozpoczyna operację zapisu w bieżącym położeniu wskaźnika pliku (jeśli istnieje) skojarzone z danym plikiem.Jeśli plik jest otwarty dołączania, operacja rozpoczyna się od bieżącego koniec pliku.Po wykonaniu operacji zapisu wskaźnika pliku zwiększa się o liczba bajtów zapisanych w rzeczywistości.
Podczas zapisywania do plików otworzyć w trybie tekst _write traktuje znaku CTRL + Z jako logiczne końca pliku.Podczas zapisywania w urządzeniu _write traktuje CTRL + Z znak w buforze jako terminatora danych wyjściowych.
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
_write |
< io.h > |
Aby uzyskać dodatkowe informacje o zgodności, zobacz Zgodność.
Przykład
// 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 );
}