_write

向文件写入数据。

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

参数

  • fd
    数据写入文件的描述符。

  • buffer
    要写入的数据。

  • count
    字节数。

返回值

如果成功, _write 返回实际编写的字节数。 如果在磁盘的实际空间比缓冲区的大小函数尝试向磁盘写入小于, _write 失败但不刷新任何一个缓冲区的内容保存到磁盘。 返回值 – 1 指示错误。 如果传递的参数无效,此函数调用的参数无效处理程序,如 参数验证所述。 如果执行允许继续,该函数返回 -1,并 errno 设置为三个值之一: EBADF,这意味着文件说明符无效或文件没有为如何将打开, ENOSPC,这意味着在该处不是在操作的虚拟机预留的足够的空间;或 EINVAL,这意味着, buffer 是一个 null 指针。

请参见 _doserrno、 errno、 _sys_errlist 和 _sys_nerr 有关这些内容的更多信息以及其他,返回代码。

如果文件在文本模式中打开,每个换行符将替换 –回车换行符在输出匹配。 替换不影响返回值。

备注

从 buffer 的 _write 功能编写 count 字节数组到文件中与 fd。 写入操作开始在文件指针的当前位置 (如果有) 与特定文件。 如果文件为追加处于打开状态,操作开始文件中的当前结束。 在写入操作后,文件指针的实际编写的字节数增加。

当写入文件在文本模式下打开的, _write 将 CTRL+Z 字符作为逻辑文件结尾。 当写入设备时, _write 将缓冲区中的某 CTRL+Z 字符作为输出结束符。

要求

实例

必需的头

_write

io.h

有关其他的兼容性信息,请参见中介绍的 兼容性

示例

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

请参见

参考

底层I/O

fwrite

_open, _wopen

_read