Compartir a través de


_write

Escribe datos en un archivo.

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

Parámetros

  • fd
    Descriptor de archivo del archivo en las que se escriben los datos.

  • buffer
    Datos que se van a escribir.

  • count
    número de bytes.

Valor devuelto

Si es correcto, _write devuelve el número de bytes escritos realmente.Si que queda el espacio real en el disco es menor que el tamaño del búfer la función intenta escribir en el disco, _write produce un error y no vacía el contenido del búfer cualquiera de los 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 no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, la función devuelve -1 y errno se establece en uno de tres valores: EBADF, que significa descriptor de archivo no es válido o el archivo no se abre para escribir; ENOSPC, que significa que no hay suficiente espacio está en el dispositivo para la operación; o EINVAL, lo que significa que buffer era puntero NULL.

Vea _doserrno, errno, _sys_errlist, y _sys_nerr para obtener más información al respecto, y otro, códigos de retorno.

Si el archivo se abre en modo de texto, cada carácter de avance de línea se reemplaza con un retorno de carro – par de avance de línea en la salida.El reemplazo no afecta al valor devuelto.

Comentarios

La función de _write escribe los bytes de count de buffer en el archivo asociado a fd.La operación de escritura comienza en la posición actual del puntero de archivo (si existe) asociado al archivo especificado.Si el archivo está abierto para anexar, la operación se inicia al final actual del archivo.Después de la operación de escritura, el puntero de archivo es aumentado por el número de bytes escritos realmente.

Cuando la escritura en archivos abierto en modo de texto, _write trata un carácter de CTRL+Z como el fin de archivo lógico.Al escribir un dispositivo, _write trata un carácter de CTRL+Z en el búfer como terminador de salida.

Requisitos

rutina

Encabezado necesario

_write

<io.h>

Para obtener información adicional de compatibilidad, vea compatibilidad en la Introducción.

Ejemplo

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

Vea también

Referencia

E/S de bajo nivel

fwrite

_open, _wopen

_read