_write

Menulis data ke file.

Sintaks

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

Parameter

fd
Pendeskripsi file file tempat data ditulis.

buffer
Data yang akan ditulis.

count
Jumlah byte.

Nilai hasil

Jika berhasil, _write mengembalikan jumlah byte yang ditulis. Jika ruang aktual yang tersisa pada disk kurang dari ukuran buffer, fungsi mencoba menulis ke disk, _write gagal dan tidak menghapus konten buffer apa pun ke disk. Nilai pengembalian -1 menunjukkan kesalahan. Jika parameter yang tidak valid diteruskan, fungsi ini memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan -1 dan errno diatur ke salah satu dari tiga nilai: EBADF, yang berarti deskriptor file tidak valid atau file tidak dibuka untuk ditulis; ENOSPC, yang berarti tidak ada cukup ruang yang tersisa pada perangkat untuk operasi; atau EINVAL, yang berarti bahwa buffer itu adalah pointer null, atau bahwa ganjil count byte diteruskan dalam mode Unicode.

Untuk informasi selengkapnya tentang kode pengembalian ini dan lainnya, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Jika file dibuka dalam mode teks, setiap karakter umpan baris diganti dengan pasangan umpan baris kembali pengangkutan dalam output. Penggantian tidak memengaruhi nilai pengembalian.

Ketika file dibuka dalam mode terjemahan Unicode—misalnya, jika fd dibuka dengan menggunakan _open atau _sopen dan parameter mode yang menyertakan _O_WTEXT, , _O_U16TEXTatau _O_U8TEXT, atau jika dibuka dengan menggunakan fopen dan parameter mode yang menyertakan ccs=UNICODE, , ccs=UTF-16LEatau ccs=UTF-8, atau jika mode diubah ke mode terjemahan Unicode dengan menggunakan _setmodebuffer ditafsirkan sebagai penunjuk ke array wchar_t yang berisi UTF-16 data. Upaya untuk menulis jumlah byte ganjil dalam mode ini menyebabkan kesalahan validasi parameter.

Keterangan

Fungsi menulis _writecount byte dari buffer ke dalam file yang terkait dengan fd. Operasi tulis dimulai pada posisi penunjuk file saat ini (jika ada) yang terkait dengan file yang diberikan. Jika file terbuka untuk ditambahkan, operasi dimulai di akhir file saat ini. Setelah operasi tulis, penunjuk file ditingkatkan dengan jumlah byte yang ditulis.

Ketika menulis ke file yang dibuka dalam mode teks, _write memperlakukan karakter CTRL+Z sebagai akhir logis file. Saat menulis ke perangkat, _write memperlakukan karakter CTRL+Z di buffer sebagai terminator output.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang diperlukan
_write <io.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// 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.

Baca juga

I/O tingkat rendah
fwrite
_open, _wopen
_read
_setmode