1 / 16

Operações com Arquivos Monitoria 2012.2

Operações com Arquivos Monitoria 2012.2. A estrutura FILE. É como um tipo de dado, mas não é um tipo propriamente dito Definido no arquivo cabeçalho stdio.h da biblioteca Declarar um ponteiro de arquivo Exemplo: FILE *fp;. Abrindo e Fechando Arquivos.

hija
Download Presentation

Operações com Arquivos Monitoria 2012.2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Operações com Arquivos Monitoria 2012.2

  2. A estrutura FILE • É como um tipo de dado, mas não é um tipo propriamente dito • Definido no arquivo cabeçalho stdio.h da biblioteca • Declarar um ponteiro de arquivo • Exemplo: • FILE *fp;

  3. Abrindo e Fechando Arquivos • FILE *fopen(char *nomeDoArquivo, char *modo); • Abre um arquivo e retorna um ponteiro para ele • Se algum erro ocorrer a constante NULL é retornada • Exemplo: • fp = fopen(“Arquivo.txt”, “r”); • É de fundamental importância verificar se o arquivo foi aberto corretamente • O nome do arquivo deve conter também a suta extensão. • int fclose(FILE *fp); • Fecha o arquivo passado como parâmetro • Retorna 0 se o arquivo foi fechado corretamente • Retorna a constante EOF se algum erro ocorreu • Exemplo: • fclose(fp); • É muito importante fechar todos os arquivos que o seu programa abriu, isto evita a perda dos dados armazenados no buffer. • Fechar um arquivo faz com que qualquer caractere que tenha permanecido no "buffer" associado ao fluxo de saída seja gravado.

  4. Modo texto x Modo binário

  5. Leitura e gravação em alto nível • Caractere a caractere • getc e putc • Linha a linha • fgets e fputs • Forma formatada • fscanf e fprintf • Bloco de dados • fread e fwrite

  6. Caractere a caractere • int getc(FILE *fp); • Lê um caractere de fp • Retorna EOF se houver erro • Exemplo: • getc(fp); • int putc(int c, FILE *fp); • Escreve um caractere em fp • Retorna EOF se houver erro • Exemplo: • putc(‘A’, fp);

  7. Linha a linha • char *fgets(char *str, int tamanho, FILE *fp); • Lê no máximotamanho caracteres de fp e guarda em str • Se a função encontrar ‘\n’ ou EOF ela para • Exemplo: • fgets(string, 80, fp); • char *fputs(char *str, FILE *fp); • Imprime uma string no arquivo • Exemplo: • fputs(string, fp);

  8. Forma formatada • int fscanf(FILE *pf, char *str, ...); • Similar a scanf() porém lê de um arquivo • Exemplo: • fscanf(fp, “%d %c”, &num, &ch); • int fprintf(FILE *pf, char *str, ...); • Similar a printf() porém escreve em um arquivo • Exemplo: • fprintf(fp, “%d %c”, num, ch);

  9. fread • int fread(void *buffer, int numBytes, int qtd, FILE *pf); • buffer é o local onde os dados lidos do arquivo serão guardados • numBytes é o tamanho da unidade a ser lida • qtd é o número máximo de unidades a serem lidas • pf é o arquivo do qual se deseja ler • O retorno é o número de unidades efetivamente lidas • Exemplo: FILE *pf = fopen(“meuArquivo”, “r”); int mat[12]; fread(mat, sizeof(int), 10, pf);

  10. fwrite • int fwrite(void *buffer, int numBytes, int qtd, FILE *pf); • buffer é o local que contém os dados a serem gravados • numBytes é o tamanho da unidade a ser gravada • qtd é o número de unidades a serem gravadas • pf é o arquivos do no qual se deseja gravar os dados • O retorno é o número de unidades efetivamente gravadas • Exemplo: FILE *pf = fopen(“meuArquivo”, “w”); int mat[] = { 1, 2, 3, 4 }; fwrite(mat, sizeof(int), 4, pf);

  11. ferror e perror • int ferror(FILE *fp); • Retorna zero se não houver erros na última operação realizada com um arquivo • Caso contrário retorna não-zero • perror (char *mensagem) • é usada em conjunto com ferror, e indica em que parte do programa ocorreu um erro. Recebe como argumento uma string. • Exemplo: • if(ferror(fp)) { perror("Erro na gravacao"); exit(1);}

  12. fseek • int fseek(FILE *pf, long numBytes, int origem); • Move a posição corrente de leitura ou escrita em um arquivo • pf é o arquivo que se deseja percorrer • numBytes é o número de bytes a serem movidos • retorna 0 em caso de sucesso ou não-zero caso contrário. • origem é o ponto de partida(geralmente usa-se as macros abaixo):

  13. rewind e remove • void rewind(FILE *fp); • Move o cursor para o inicio do arquivo • Exemplo: • rewind(fp); • int remove(char *Arquivo); • Apaga o arquivo que passamos o ponteiro. • Retorna zero se ocorreu sucesso • Não zero em caso de erro • Exemplo: • remove(“Arquivo.txt”);

  14. Verificando fim de arquivo • int feof(FILE *fp); • Indica o fim de um arquivo • Retorna não-zero se o arquivo chegou ao fim e zero caso contrário • Outra maneira de verificar o término do arquivo é comparar um caractere lido com EOF.

  15. Exercícios 1) Escreva um programa que leia um arquivo e imprime no final desse mesmo arquivo, sem sobrescreve-lo, qual é o caractere que mais se repete. O nome do arquivo a ser lido deve ser dado pelo usuario. 2)Faça um programa que lê de um arquivo, o sexo, o primeiro nome, e a idade de uma lista de pessoas. Imprima em outro arquivo, o número de homens, o número de mulheres e a idade da pessoa mais velha. A primeira linha do arquivo de entrada deve conter o número de pessoas. Ex: Entrada.txt 3 M Joao 40 F Maria 32 M Carlos 27 Saída.txt O numero de homens: 2 O numero de mulheres: 1 A idade da pessoa mais velha e: 40

More Related