Escolar Documentos
Profissional Documentos
Cultura Documentos
Praticamente todas as aplicaes necessitam armazenar ou ler dados de arquivos de dados A linguagem C oferece 2 formas bsicas de manipulao com arquivos
E/S de alto nvel
Bufferizao interna Uso de STREAMS Utiliza apontadores para arquivos: FILE *
Arquivos na Linguagem C
STREAMS
Streams so fluxos de dados armazenados em buffers de memria interna e associados a arquivos em dispositivos externos Na linguagem C um stream est associado a um tipo de dado denominado FILE * e pode ser denominado de apontador de arquivos A E/S de alto nvel utiliza streams A conexo de um arquivo a um stream feita abrindo o arquivo. A conexo termina quando o mesmo fechado.
O tratamento de arquivos de alto-nvel em C faz uso do tipo de dados FILE que est definido em stdio.h
fgets() l uma cadeia de caracteres de um stream. Recebe um parmetro que especifica o tamanho mximo da cadeia a ser lida. A leitura pra se for encontrado um \n. Retorna a cadeia lida em caso de sucesso ou NULL em caso de erro.
#include <stdio.h> char *fgets(char *s, int n, FILE *stream);
Entrada/Sada formatada
fscanf() semelhante a scanf(), s que recebe um parmetro a mais indicando o stream de onde devem ser lidos os dados. #include <stdio.h> int fscanf(FILE *fp, const char *formato, ...); scanf(...) fscanf(stdin, ...)
fprintf() semelhante a printf(), s que recebe um parmetro a mais indicando o stream onde devem ser escritos os dados. #include <stdio.h> int fprintf(FILE *fp, const char *formato, ...); printf(...) fprintf(stdout, ...)
Leitura/Escrita Direta
fread() l de um stream um conjunto de objetos de um tamanho especificado, armazenando-os em um vetor de dados. Retorna o nmero de objetos realmente lidos.
#include <stdio.h> size_t fread(void *buf, size_t tamanho, size_t quantidade, FILE *stream);
fwrite() escreve num stream um conjunto de objetos de um tamanho especificado. Os objetos a serem armazenados devem estar em um vetor de dados. fwrite() retorna o nmero de objetos realmente escritos.
ftell() retorna a posio atual do arquivo associado ao stream, ou -1L em caso de erro.
#include <stdio.h> long ftell(FILE *stream);
Manipulando erros
ferror() retorna um valor diferente de zero se o indicador de erro para o stream indicado estiver setado. #include <stdio.h> int ferror(FILE *stream); Varivel errno definida em <errno.h> contm o cdigo do ltimo erro ocorrido. feof() retorna um valor diferente de zero se o indicador fim de arquivo para o stream indicado estiver setado. #include <stdio.h> int feof(FILE *stream);
Manipulando erros
clearerr() apaga os indicadores de erro e fim de arquivo para o stream especificado. #include <stdio.h> void clearerr(FILE *stream); perror() imprime na sada padro de erros a string passada como parmetro seguida de dois pontos (:) e uma mensagem associada a o ltimo erro ocorrido. #include <stdio.h> void perror(const char *s);
rename() modifica o nome de um arquivo. Retorna zero em caso de sucesso e um valor no zero em caso de falha.
#include <stdio.h> int rename(const char *nome_ant, const char *nome_novo);
Arquivos temporrios
tmpfile() cria um arquivo temporrio no modo "w+b", este arquivo ser removido automaticamente quando for fechado. Retorna um stream vlido em caso de sucesso e NULL em caso de falha. #include <stdio.h> FILE *tmpfile(void); tmpnam() devolve um nome de arquivo temporrio no existente no diretrio corrente. Recebe um apontador para o vetor que ir armazenar o nome ou NULL, caso em que devolvido o endereo de um vetor esttico interno. #include <stdio.h> char *tmpnam(char *strnome);
Descritores de Arquivos
Descritores de arquivos so nmeros inteiros que identificam um arquivo junto ao sistema operacional. So devolvidos pelas rotinas de E/S de baixo nvel que abrem ou criam um arquivo So utilizados como um parmetro em todas as rotinas de E/S de baixo nvel que fazem a manipulao com o arquivos Toda aplicao em C j recebe trs arquivos abertos, que tm os seguintes descritores:
0 (associado entrada padro) 1 (associado sada padro) 2 (associado sada padro de erros)
nome - nome do arquivo (incluindo path) a abrir. modo - indica como o arquivo deve ser aberto: O_RDONLY - s leitura O_WRONLY - s escrita O_RDWR - leitura/escrita O_CREAT - cria arquivo perms - octal c/ permisses de acesso ao arquivo
Abre arquivo para realizar leitura/escrita. Se o arquivo no existir o mesmo ser criado com as permisses rw-r--r-