Udostępnij przez


_write

Zapisuje dane w pliku.

Składnia

int _write(
   int fd,
   const void *buffer,
   unsigned int count
);

Parametry

fd
Deskryptor pliku, w którym są zapisywane dane.

buffer
Dane do zapisania.

count
Liczba bajtów.

Wartość zwracana

Jeśli operacja powiedzie się, _write zwraca liczbę zapisanych bajtów. Jeśli rzeczywiste miejsce pozostałe na dysku jest mniejsze niż rozmiar buforu, funkcja próbuje zapisać na dysku, _write kończy się niepowodzeniem i nie opróżni żadnej zawartości buforu na dysk. Zwracana wartość -1 wskazuje błąd. Jeśli przekazano nieprawidłowe parametry, ta funkcja wywołuje nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcja zwraca wartość -1 i errno jest ustawiona na jedną z trzech wartości: EBADF, co oznacza, że deskryptor pliku jest nieprawidłowy lub plik nie jest otwarty do zapisu; ENOSPC, co oznacza, że na urządzeniu nie ma wystarczającej ilości miejsca na urządzeniu dla operacji; lub EINVAL, co oznacza, że buffer był to wskaźnik o wartości null lub że nieparzysta count liczba bajtów została przekazana w trybie Unicode.

Aby uzyskać więcej informacji na temat tych i innych kodów powrotnych, zobacz errno, _doserrno, _sys_errlisti _sys_nerr.

Jeśli plik jest otwarty w trybie tekstowym, każdy znak kanału informacyjnego wiersza zostanie zastąpiony parą zestawienia powrotnego karetki w danych wyjściowych. Zamiana nie ma wpływu na wartość zwracaną.

Po otwarciu pliku w trybie tłumaczenia Unicode , na przykład, jeśli fd jest otwarty przy użyciu lub _open_sopen i parametr trybu, który zawiera _O_WTEXT, _O_U16TEXTlub _O_U8TEXT, lub jeśli jest otwarty przy użyciu fopen i parametr trybu, który zawiera ccs=UNICODE, ccs=UTF-8ccs=UTF-16LElub , lub jeśli tryb zostanie zmieniony na tryb tłumaczenia Unicode przy _setmodeużyciu —buffer jest interpretowany jako wskaźnik do tablicy zawierającej wchar_tUTF-16 dane. Próba zapisania nieparzysta liczby bajtów w tym trybie powoduje błąd walidacji parametru.

Uwagi

Funkcja _write zapisuje bajty count z buffer pliku skojarzonego z fd. Operacja zapisu rozpoczyna się na bieżącej pozycji wskaźnika pliku (jeśli istnieje) skojarzonego z danym plikiem. Jeśli plik jest otwarty do dołączania, operacja rozpoczyna się na bieżącym końcu pliku. Po operacji zapisu wskaźnik pliku jest zwiększany o liczbę zapisanych bajtów.

Podczas zapisywania w plikach otwartych w trybie _write tekstowym traktuje znak CTRL+Z jako logiczny koniec pliku. Podczas zapisywania na urządzeniu _write traktuje znak CTRL+Z w buforze jako terminator wyjściowy.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Procedura Wymagany nagłówek
_write <io.h>

Aby uzyskać więcej informacji 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 occurred
            perror("Unexpected error!");
      }
   }
   else
   {
      printf_s( "Wrote %u bytes to file.\n", bytesWritten );
   }
   _close( fileHandle );
}
Wrote 36 bytes to file.

Zobacz też

We/Wy niskiego poziomu
fwrite
_open, _wopen
_read
_setmode