Esta é a segunda parte de um tutorial que trata a manipulação de arquivos em C. Aqui veremos o funcionamento de funções como: fprintf, fscanf, fwrite, fread, fseek, etc.
Por: Kleber de Andrade Reis
Introdução
Nesse artigo vamos aprender mais sobre a manipulação de arquivos em C, veremos o uso de diversas funções, algumas básicas e outras nem tanto.
Com esse artigo estou finalizando esse assunto e lembrando que essa é a segunda parte, abaixo o link para a primeira parte:
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Lendo e escrevendo em um arquivo usando fprintf e fscanf
fprintf
Escreve uma constante de caracteres em um arquivo, essa função funciona como printf, sendo que a diferença é a saída padrão, que em fprintf é um arquivo e em printf é o monitor.
Protótipo: int fprintf (FILE *fp, const char *format,...);
* Parâmetro 1: "FILE *fp" - o arquivo a ser escrito.
* Parâmetro 2: "const char *format" - o que será escrito.
fscanf
Lê uma constante de caracteres de um arquivo, essa função funciona como scanf, sendo que a diferença é a entrada padrão que em fscanf é um arquivo e em scanf é o teclado.
Protótipo: int fscanf (FILE *fp, const char *format,...);
* Parâmetro 1: "FILE *fp" - o arquivo a ser lido.
* Parâmetro 2: "const char *format" - qual a variável que receberá os dados do arquivo.
Exemplo do uso das funções fprintf e fscanf
Outras funções
Arquivos pré-definidos
Quando se começa a execução de um programa, o sistema automaticamente abre alguns arquivos pré-definidos:
* stdin: dispositivo de entrada padrão (geralmente o teclado);
* stdout: dispositivo de saída padrão (geralmente o vídeo);
* stderr: dispositivo de saída de erro padrão (geralmente o vídeo);
* stdaux: dispositivo de saída auxiliar (em muitos sistemas, associado à porta serial);
* stdprn: dispositivo de impressão padrão (em muitos sistemas, associado à porta paralela).
Cada uma destas constantes pode ser utilizada como um ponteiro para FILE, para acessar os periféricos associados a eles. Desta maneira, pode-se, por exemplo, usar:
c =getc(stdin);
para efetuar a leitura de um caracter a partir do teclado, ou:
putc(c, stdout);
para imprimí-lo na tela.
fgets
Lê uma string de um arquivo. A função lê a string até que um caracter de nova linha seja lido /n ou tamanho-1 caracteres tenham sido lidos. Se o caracter de nova linha for lido, ele fará parte da string, o que não acontecia com gets. A string resultante sempre terminará com /0 (por isto somente tamanho-1 caracteres, no máximo, serão lidos).
Protótipo: char *fgets (char *str, int tamanho, FILE *fp);
* Parâmetro 1 "char *str": a variável que receberá a string.
* Parâmetro 2 "int tamanho": o limite máximo de caracteres a serem lidos.
* Parâmetro 3 "FILE *fp": o arquivo que será lido.
fputs
Escreve uma string num arquivo.
Protótipo: char *fputs (char *str, FILE *fp);
* Parâmetro 1: "char *str" - a variável que contém os dados a serem escritos no arquivo.
* Parâmetro 2: "FILE *fp" - o arquivo a ser escrito.
fread
Leitura de bloco de dados.
Protótipo: unsigned fread (void *buffer, int numero_de_bytes, int count, FILE *fp);
* Parâmetro 1: "void *buffer" - variável na qual serão armazenados os dados lidos.
* Parâmetro 2: "int numero_de_bytes" - o número de bytes a ser lido.
* Parâmetro 3: "int count" - indica quantas unidades devem ser lidas.
Parâmetro 4: "FILE *fp" - arquivo a ser lido.
fwrite
Leitura de bloco de dados.
Protótipo: unsigned fwrite (void *buffer, int numero_de_bytes, int count, FILE *fp);
* Parâmetro 1: "void *buffer" - variável na qual serão transmitidos os dados ao arquivo.
* Parâmetro 2: "int numero_de_bytes" - o número de bytes a ser escrito.
* Parâmetro 3: "int count" - indica quantas unidades devem ser escritas.
* Parâmetro 4: "FILE *fp" - arquivo a ser escrito.
fseek
Procuras e acessos randômicos em arquivos. Esta move a posição corrente de leitura ou escrita no arquivo de um valor especificado, a partir de um ponto especificado.
Protótipo: int fseek (FILE *fp, long numbytes, int origem);
* Parâmetro 1: "FILE *fp" - arquivo a ser manipulado.
* Parâmetro 2: "long numbytes" - indica quantos bytes o cursor de posição do arquivo será movimentado apartir da sua posição atual.
* Parâmetro 3: "int origem" - indica apartir de onde os numbytes serão contados. Abaixo uma tabela com os possíveis valores:
rewind
Retorna a posição corrente do arquivo para o início.
Protótipo: void rewind (FILE *fp);
* Parâmetro: "FILE *fp" - arquivo a ser manipulado.
Bibliografia e conclusão
Abaixo relaciono a bibliografia utilizada para o desenvolvimento desse tutorial:
* Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
* Programando em C/C++ - "A Bíblia" - Jamsa.
* Manual do próprio Linux - para usar basta digitar: $ man nome_da_funcao.
Conclusão
Com mais esse artigo encerro o assunto de manipulação de arquivos em C, porém deixo um alerta e um conselho:
O que vimos com esse tutorial é apenas um começo e se você precisa ou quer aprender sobre esse assunto, pesquise e use sua criatividade.
Fonte: vivaoLinux
Postado Por: RedDeviL
Por: Kleber de Andrade Reis
Introdução
Nesse artigo vamos aprender mais sobre a manipulação de arquivos em C, veremos o uso de diversas funções, algumas básicas e outras nem tanto.
Com esse artigo estou finalizando esse assunto e lembrando que essa é a segunda parte, abaixo o link para a primeira parte:
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Lendo e escrevendo em um arquivo usando fprintf e fscanf
fprintf
Escreve uma constante de caracteres em um arquivo, essa função funciona como printf, sendo que a diferença é a saída padrão, que em fprintf é um arquivo e em printf é o monitor.
Protótipo: int fprintf (FILE *fp, const char *format,...);
* Parâmetro 1: "FILE *fp" - o arquivo a ser escrito.
* Parâmetro 2: "const char *format" - o que será escrito.
fscanf
Lê uma constante de caracteres de um arquivo, essa função funciona como scanf, sendo que a diferença é a entrada padrão que em fscanf é um arquivo e em scanf é o teclado.
Protótipo: int fscanf (FILE *fp, const char *format,...);
* Parâmetro 1: "FILE *fp" - o arquivo a ser lido.
* Parâmetro 2: "const char *format" - qual a variável que receberá os dados do arquivo.
Exemplo do uso das funções fprintf e fscanf
Código:
/* Lendo e escrevendo em um arquivo */ #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char s[50],c; /* Lê um nome para o arquivo a ser aberto: */ printf("\n\n Digite o caminho completo inclusive o nome para o arquivo:\n"); gets(s); if (!(fp = fopen(s,"w"))) /* Caso ocorra algum erro na abertura do arquivo o programa será finalizado */ { printf("Erro! Impossível abrir o arquivo!\n"); exit(1); } /* Se não houve erro, imprime no arquivo...*/ fprintf(fp,"Este e um arquivo chamado:\n%s\n", s); fclose(fp); /* fecha o arquivo */ /* abre novamente para a leitura */ fp = fopen(s,"r"); while (!feof(fp)) { fscanf(fp,"%c",&c); printf("%c",c); } fclose(fp); return(0); }
Arquivos pré-definidos
Quando se começa a execução de um programa, o sistema automaticamente abre alguns arquivos pré-definidos:
* stdin: dispositivo de entrada padrão (geralmente o teclado);
* stdout: dispositivo de saída padrão (geralmente o vídeo);
* stderr: dispositivo de saída de erro padrão (geralmente o vídeo);
* stdaux: dispositivo de saída auxiliar (em muitos sistemas, associado à porta serial);
* stdprn: dispositivo de impressão padrão (em muitos sistemas, associado à porta paralela).
Cada uma destas constantes pode ser utilizada como um ponteiro para FILE, para acessar os periféricos associados a eles. Desta maneira, pode-se, por exemplo, usar:
c =getc(stdin);
para efetuar a leitura de um caracter a partir do teclado, ou:
putc(c, stdout);
para imprimí-lo na tela.
fgets
Lê uma string de um arquivo. A função lê a string até que um caracter de nova linha seja lido /n ou tamanho-1 caracteres tenham sido lidos. Se o caracter de nova linha for lido, ele fará parte da string, o que não acontecia com gets. A string resultante sempre terminará com /0 (por isto somente tamanho-1 caracteres, no máximo, serão lidos).
Protótipo: char *fgets (char *str, int tamanho, FILE *fp);
* Parâmetro 1 "char *str": a variável que receberá a string.
* Parâmetro 2 "int tamanho": o limite máximo de caracteres a serem lidos.
* Parâmetro 3 "FILE *fp": o arquivo que será lido.
fputs
Escreve uma string num arquivo.
Protótipo: char *fputs (char *str, FILE *fp);
* Parâmetro 1: "char *str" - a variável que contém os dados a serem escritos no arquivo.
* Parâmetro 2: "FILE *fp" - o arquivo a ser escrito.
fread
Leitura de bloco de dados.
Protótipo: unsigned fread (void *buffer, int numero_de_bytes, int count, FILE *fp);
* Parâmetro 1: "void *buffer" - variável na qual serão armazenados os dados lidos.
* Parâmetro 2: "int numero_de_bytes" - o número de bytes a ser lido.
* Parâmetro 3: "int count" - indica quantas unidades devem ser lidas.
Parâmetro 4: "FILE *fp" - arquivo a ser lido.
fwrite
Leitura de bloco de dados.
Protótipo: unsigned fwrite (void *buffer, int numero_de_bytes, int count, FILE *fp);
* Parâmetro 1: "void *buffer" - variável na qual serão transmitidos os dados ao arquivo.
* Parâmetro 2: "int numero_de_bytes" - o número de bytes a ser escrito.
* Parâmetro 3: "int count" - indica quantas unidades devem ser escritas.
* Parâmetro 4: "FILE *fp" - arquivo a ser escrito.
fseek
Procuras e acessos randômicos em arquivos. Esta move a posição corrente de leitura ou escrita no arquivo de um valor especificado, a partir de um ponto especificado.
Protótipo: int fseek (FILE *fp, long numbytes, int origem);
* Parâmetro 1: "FILE *fp" - arquivo a ser manipulado.
* Parâmetro 2: "long numbytes" - indica quantos bytes o cursor de posição do arquivo será movimentado apartir da sua posição atual.
* Parâmetro 3: "int origem" - indica apartir de onde os numbytes serão contados. Abaixo uma tabela com os possíveis valores:
Código:
Nome Valor Significado SEEK_SET 0 Início do arquivo SEEK_CUR 1 Ponto corrente no arquivo SEEK_END 2 Fim do arquivo
rewind
Retorna a posição corrente do arquivo para o início.
Protótipo: void rewind (FILE *fp);
* Parâmetro: "FILE *fp" - arquivo a ser manipulado.
Bibliografia e conclusão
Abaixo relaciono a bibliografia utilizada para o desenvolvimento desse tutorial:
* Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
* Programando em C/C++ - "A Bíblia" - Jamsa.
* Manual do próprio Linux - para usar basta digitar: $ man nome_da_funcao.
Conclusão
Com mais esse artigo encerro o assunto de manipulação de arquivos em C, porém deixo um alerta e um conselho:
O que vimos com esse tutorial é apenas um começo e se você precisa ou quer aprender sobre esse assunto, pesquise e use sua criatividade.
Fonte: vivaoLinux
Postado Por: RedDeviL