Função write

Sintaxe:

ssize_t write (int iFileDescriptor, const void * buffer, size_t nbyte);


A função write grava no arquivo indicado pelo descritor as informações obtidas do endereço fornecido. Os dados serão gravados a partir da posição atual do arquivo. Caso a opção O_APPEND tenha sido especificada na abertura, a posição atual do arquivo será antes atualizada com o valor do tamanho do arquivo. Após a gravação a posição atual do arquivo será somada da quantidade de bytes gravados no arquivo.

Deve-se informar a quantidade de bytes a ser gravado no arquivo. Caso ocorra algum erro, a função irá retornar -1, e a descrição do erro estará disponível na variável errno. Caso não ocorra erro a função irá retornar a quantidade de bytes gravados no arquivo, que deve ser igual à quantidade informada como parâmetro.

Veja o exemplo:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
 
int main (int argc, char  *argv[])
{
   int iFileDescriptor;
   ssize_t iQtdeWrite;
   char aBuffer[100];
   if( argc < 2 )
   {
      fprintf(stderr, "Obrigatório informar os nomes dos arquivos\n");
      exit(1);
   }
 
   /* abrindo o arquivo, caso o arquivo exista sera truncado */
   iFileDescriptor = open (argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0755);
   if (iFileDescriptor < 0)
   {
     perror (argv[0]);
     exit (errno);
   }
 
   printf ("Arquivo '%s' aberto\n", argv[1]);
   strcpy (aBuffer,"Esta linha foi gravada pelo programa.");
 
   /* Gravando um texto no arquivo. Deve-se sempre passar o endereço de memória da variável cujo conteúdo deseja-se para gravar. */
   iQtdeWrite = write (iFileDescriptor, &aBuffer, strlen (aBuffer));
 
   if (iQtdeWrite < strlen (aBuffer)) /* Sempre deve ser verificado se todos os dados foram gravados. Basta comparar a quantidade 
                                         de bytes gravados com o tamanho da variável que deseja-se gravar. */
   {
      perror (argv[0]);
      exit (errno);
   }
   printf("\nForam gravado %d bytes no arquivo '%s'\n", iQtdeWrite, argv[1]);
 
   close(iFileDescriptor);
   return 0;
}

Marcos Laureano 2008/04/25 06:48

write.txt · Última modificação: 2009/05/10 20:08 por laureano
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0