Se recomienda usar Visual Studio 2017

_write

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Escribe datos en un archivo.

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

Parámetros

fd
Descriptor de archivo del archivo en el que se van a escribir datos.

buffer
Datos que se van a escribir.

count
Número de bytes.

Si es correcto, _write devuelve el número de bytes escrito realmente. Si el espacio real que queda en el disco es inferior al tamaño del búfer que la función trata de escribir en el disco, se produce un error en _write y no se vuelca ningún contenido del búfer en el disco. Un valor devuelto de –1 indica un error. Si se pasan parámetros no válidos, esta función invoca el controlador de parámetros no válidos, como se describe en validación del parámetro. Si la ejecución puede continuar, la función devuelve -1 y errno se establece en uno de estos tres valores: EBADF, lo que significa que el descriptor de archivo no es válido o el archivo no está abierto para escritura; ENOSPC, lo que significa que no hay suficiente espacio restante en el dispositivo para la operación; o EINVAL, lo que significa que buffer era un puntero nulo, o que un impar count de bytes que se pasó para escribirse en un archivo en modo Unicode.

Para obtener más información sobre estos y otros códigos de retorno, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Si el archivo se abre en modo de texto, cada carácter de salto de línea se reemplazará por un par de retorno de carro-avance de línea en la salida. Este reemplazo no tiene efecto alguno en el valor devuelto.

Cuando se abre el archivo en modo de traducción de Unicode, por ejemplo, si fd se abre mediante _open o _sopen y un parámetro de modo que incluya _O_WTEXT, _O_U16TEXT, o _O_U8TEXT, o si se abre mediante el uso de fopen y un parámetro de modo que incluya ccs=UNICODE, ccs=UTF-16LE, o ccs=UTF-8, o si el modo se cambia a un modo de traducción de Unicode utilizando _setmode:buffer se interpreta como un puntero a una matriz de wchar_t que contiene UTF-16 datos. Si se intenta escribir un número impar de bytes en este modo, se producirá un error de validación de parámetros.

La función _write escribe count bytes desde el buffer al archivo asociado a fd. La operación de escritura se inicia en la posición actual del puntero de archivo (si existe) asociado al archivo en cuestión. Si el archivo se abre para anexarlo, la operación comenzará en el final actual del archivo. Tras la operación de escritura, el puntero de archivo se incrementará según el número de bytes escrito realmente.

Cuando se escribe en archivos abiertos en modo de texto, _write trata un carácter CTRL+Z como el final de archivo lógico. Si se escribe en un dispositivo, _write trata un carácter CTRL+Z en el búfer como un terminador de salida.

RutinaEncabezado necesario
_write<io.h>

Para obtener más información sobre compatibilidad, vea Compatibilidad.

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

Wrote 36 bytes to file.  

Salidas de bajo nivel
fwrite
_open, _wopen
_read
_setmode

Mostrar: