Partilhar via


Write

Grava dados em um arquivo.

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

Parâmetros

  • fd
    Descritor de arquivo do arquivo no qual os dados são gravados.

  • buffer
    Dados a serem gravados.

  • count
    Número de bytes.

Valor de retorno

Se for bem-sucedido, _write retorna o número de bytes gravados.Se o espaço real, restante no disco for menor que o tamanho do buffer a função está tentando gravar no disco, _write falha e não liberar qualquer conteúdo do buffer no disco.Um valor de retorno de – 1 indica um erro.Se forem passados parâmetros inválidos, essa função chama o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, a função retornará -1 e errno é definido como um dos três valores: EBADF, que significa que o descritor de arquivo é inválido ou não, o arquivo é aberto para gravação; ENOSPC, que significa que não há espaço suficiente deixado no dispositivo para a operação; ou EINVAL, que significa que buffer foi um ponteiro nulo.

Consulte _doserrno, errno, _sys_errlist e _sys_nerr para obter mais informações sobre estes e outros, códigos de retorno.

Se o arquivo é aberto no modo de texto, cada caractere de avanço de linha é substituído por um retorno de carro – o par de avanço de linha na saída.A substituição não afeta o valor de retorno.

Comentários

O _write funcionarem gravações count bytes de buffer no arquivo associado a fd.A operação de gravação começa na posição atual do ponteiro do arquivo (se houver) associada ao arquivo fornecido.Se o arquivo está aberto para acrescentar, a operação começa no final do arquivo atual.Após a operação de gravação, o ponteiro do arquivo é aumentado pelo número de bytes gravados.

Ao gravar arquivos abertos no modo de texto, _write trata de um caractere CTRL + Z como o final do arquivo lógico.Ao gravar em um dispositivo, _write trata de um caractere CTRL + Z no buffer como um terminador de saída.

Requisitos

Rotina

Cabeçalho necessário

_write

<io.h>

Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.

Exemplo

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

Consulte também

Referência

Nível baixo e/S

Fwrite

Open, _wopen

Read