_Write
Zapisuje dane do pliku.
int _write(
int fd,
const void *buffer,
unsigned int count
);
Parametry
fd
Plik deskryptora pliku, do którego dane są zapisywane.buffer
Dane są zapisywane.count
Liczba bajtów.
Wartość zwracana
W przypadku powodzenia, _write zwraca liczbę bajtów faktycznie zapisane.Jeżeli faktyczna ilość miejsca na dysku jest mniejszy niż rozmiar buforu funkcji próby zapisu na dysku, _write kończy się niepowodzeniem i nie opróżnia dowolną zawartość bufora na dysku.Zwracana wartość –1 wskazuje na błąd.Jeżeli nie przekazano nieprawidłowe parametry, funkcja ta wywołuje obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może w dalszym ciągu, funkcja zwraca wartość -1 i errno jest ustawiona na jeden z trzech wartości: EBADF, co oznacza deskryptor pliku jest nieprawidłowa lub plik nie jest otwarty do zapisu; ENOSPC, oznacza to, nie ma wystarczającej ilości miejsca pozostało na urządzeniu dla tej operacji; lub EINVAL, co oznacza, że buffer został wskaźnik zerowy.
Zobacz _doserrno, errno, _sys_errlist i _sys_nerr uzyskać więcej informacji o tych i innych, kody zwracane.
Jeśli plik jest otwarty w trybie tekstowym, każdy znak wysuwu wiersza zostanie zastąpiona znakiem powrotu karetki – pary wysuwu wiersza w danych wyjściowych.Zastąpienie nie wpływa na wartość zwracaną.
Uwagi
_write Działać zapisy count bajtów z buffer do pliku skojarzonego z fd.Operacja zapisu rozpoczyna się w bieżącym położeniu wskaźnika pliku (jeśli istnieje) skojarzone z danym plikiem.Jeśli plik jest otwarty do dołączania, operacja rozpoczyna się na koniec bieżącego pliku.Po zakończeniu operacji zapisu wskaźnika pliku zwiększa się liczba bajtów zapisanych w rzeczywistości.
Podczas zapisywania plików otwartych w trybie tekstowym, _write traktuje znaku CTRL + Z jako logiczne końca z pliku.Podczas pisania na urządzeniu, _write traktuje znaku CTRL + Z w buforze jako terminator danych wyjściowych.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_write |
<io.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
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 );
}