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