Linguagem C 10 Arquivos

Embed Size (px)

Citation preview

  • 1. Linguagem C Arquivos Regis Pires Magalhes [email_address]

2. Arquivos

  • Podem armazenar grande quantidade de informao;
  • Dados so persistentes (gravados em disco).

3. Tipos de Arquivos

  • Texto
    • Armazena caracteres que podem ser mostrados diretamente na tela ou modificados por um editor de textos simples.
    • Conhecido por arquivo seqencial.
    • Tipo especial de arquivo que pode ser editado normalmente atravs de um editor de textos qualquer.
    • dito seqencialporque a leitura tem que serfeita seqencialmente do incio ao fim do arquivo.

4. Tipos de Arquivos

  • Binrio
    • Seqncia de bits sujeita s convenes dos programas que o gerou.
    • Conhecido por Arquivo randmico, ou de acesso aleatrio.
      • possvelbuscar uma determinada informao em qualquer posio, sem necessidade de percorrer todo o arquivo at alcanar a informao desejada.
      • O acesso a informao direto.
    • Exemplos:
      • Arquivos executveis, arquivos compactados, arquivos de registros.

5. Manipulao de Arquivos

  • Passos:
    • Criar um ponteiro para a estrutura FILE (definida em stdio.h)
    • Abrir o arquivo.
    • Ler ou gravar dados no arquivo.
    • Fechar o arquivo.

6. Escrita de Arquivo Texto #include intmain() { FILE*arq; arq =fopen ( "teste1.txt" ,"w" ); fprintf (arq,"Ola, Mundo!!! " ); fclose (arq); return0; } 7. Leitura de Arquivo Texto #include intmain() { FILE*arq; charc; arq =fopen ( "teste.txt" ,"r" ); c = getc(arq); while(c != EOF) { printf ( "%c" , c); c = getc(arq); } fclose (arq); return0; } 8. Somatrio dos nmeros de um arquivo #include intmain() { FILE*arq; intnumero, soma = 0; arq =fopen ( "numeros.txt" ,"r" ); while( fscanf (arq,"%d" , &numero) != EOF) { soma = soma + numero; } printf ( "A soma e: %d " , soma);fclose (arq); return0; } 9. Funes

  • fopen("nome", "modo")
    • Abre um arquivo e retorna um ponteiro para ele.
    • Caso no consiga abrir o arquivo, retorna NULL.
  • fprintf(fp, "formato", arg1, ...)
    • Escreve para um arquivo
  • fclose(fp)
    • Fecha um arquivo
  • getc(fp)
    • Obtm um caractere.
  • fscanf(fp, "formato", arg1, ...)
    • L de um arquivo.
  • fwrite(*prt, tamanho_bloco , n, fp)
    • Escreve n blocos de *ptr para o arquivo.

10. Funes

  • fread(*ptr, tamanho_bloco, n, fp)
  • fseek(fp, posicao, modo)
    • Altera a posio no arquivo.
    • Deslocamento relativo ao:
      • SEEK_SET incio do arquivo
      • SEEK_CUR ponto inicial
      • SEEK_END final do arquivo
  • fflush(fp)
    • Realiza a gravao efetiva do arquivo
  • ftell(fp)
    • Indica a posio corrente do ponteiro do arquivo.

11. Modos de Operao 12. Salvando uma estrutura #include #include structpessoa { char nome [50]; int idade ; }; typedef structpessoaPessoa ; intmain() { FILE*arq; arq =fopen ( "pessoas.txt" ,"ab" ); Pessoap; printf ( "Digite um nome: " ); gets (p. nome ); printf ( "Digite a idade: " ); scanf ( "%d" , &p. idade ); fwrite (&p,sizeof ( Pessoa ), 1, arq); fclose (arq); return0; } 13. Lendo todo o arquivo #include #include structpessoa { char nome [50]; int idade ; }; typedef structpessoaPessoa ; intmain() { FILE*arq; arq =fopen ( "pessoas.txt" ,"rb" ); Pessoap; while ( fread (&p,sizeof ( Pessoa ), 1, arq) != 0) { printf ( "Nome: %s - Idade: %d " , p. nome , p. idade ); } fclose (arq); return0; }