====== Função write ====== Sintaxe: ''[[tipos_dados|ssize_t]] write ([[tipos_dados|int]] iFileDescriptor, [[const]] [[tipos_dados|void]] * buffer, [[tipos_dados|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 #include #include #include #include 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.eti.br|Marcos Laureano]] 2008/04/25 06:48//