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