Udostępnij za pośrednictwem


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

Zobacz też

Informacje

We/Wy niskiego poziomu

fwrite

_open, _wopen

_read

_setmode