Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Arquivos em C

57 views

Published on

  • Be the first to comment

  • Be the first to like this

Arquivos em C

  1. 1. Arquivos em C Geanderson Esteves Mestrando em Ciências da Computação Universidade Federal de Minas Gerais
  2. 2. Conceitos Básicos Conjuntos de informações mantidas no disco (memória secundária) Informações são “persistidas” em comparação com a memória RAM (memória primária) Sistema Operacional (OS) faz um “buffer” das informações lidas/gravadas
  3. 3. Analogia do conceito
  4. 4. Conceitos Básicos Em C, arquivos podem ser gravados de duas maneiras: ● Modo texto (conjunto de caracteres) ○ Arquivo texto pode ser tratado por qualquer editor (e.g., bloco de notas, terminal, word, etc.) ● Modo binário (conjunto de bytes) ○ Ex: Grandes quantidades de informações de forma eficiente
  5. 5. Operações Primordiais ● Abertura do arquivo (localização, alocação do buffer); ● Leitura do arquivo (informações do buffer são disponibilizadas); ● Gravação do arquivo (alteração de dados preexistentes ou acréscimo de novos dados); ● Fechamento do arquivo (atualização do buffer e liberação de memória alocada);
  6. 6. Comandos Essenciais FILE *fp; FILE *fopen(char *nome_arquivo, char *modo_de_acesso); int fclose(FILE *fluxo);
  7. 7. Possíveis modos de acesso modo_de_acesso Significado r Abre o arquivo somente para leitura. O arquivo deve existir. r+ Abre o arquivo para leitura e escrita. O arquivo deve existir. w Abre o arquivo somente para escrita no início do arquivo. Apagará o conteúdo do arquivo se ele já existir, criará um arquivo novo se ele não existir. w+ Abre o arquivo para escrita e leitura, apagando o conteúdo pré-existente. a Abre o arquivo para escrita no final do arquivo. Não apagará o conteúdo pré-existente. a+ Abre o arquivo para escrita no final do arquivo e leitura.
  8. 8. Ex1. Testando criação de um arquivo #include <stdio.h> int main() { FILE *fp; fp = fopen ("README", "w"); if (fp == NULL) { printf ("Houve um erro ao abrir o arquivo.n"); return 1; } printf ("Arquivo README criado com sucesso.n"); fclose (fp); return 0; }
  9. 9. Ex2. Lendo um arquivo #include <stdio.h> int main() { char c[41]; FILE *fp; fp = fopen("README", "r"); while(fgets(c, 40, fp) != NULL) puts(c); fclose(fp); return 0; }
  10. 10. Ex3. Contando linhas de um arquivo #include <stdio.h> int main() { int c, nlinhas = 0; FILE *fp; fp = fopen("README", "r"); while((c=fgetc(fp))!=EOF) if(c=='n') nlinhas++; fclose(fp); printf("Numero de linhas = %dn", nlinhas); return 0; }
  11. 11. Escrevendo em um arquivo void fputc(int caractere, FILE *fluxo) void fputs(char *string, FILE *fluxo) void fprintf(FILE *fluxo, char *formatação) int fwrite(void *dados, int tamanho_do_elemento, int num_elementos, FILE *fluxo)
  12. 12. Escrevendo em um arquivo Saída padrão Arquivos Explicação putchar fputc Imprime apenas um caractere puts fputs Imprime uma string diretamente, sem nenhuma formatação printf fprintf Imprime uma string formatada N/A fwrite Grava dados binários em um arquivo
  13. 13. Ex4. Escrevendo em um arquivo [1] #include <stdio.h> int main() { FILE *fp; fp = fopen ("README", "w"); fprintf(fp, "Salvando alguma coisa no meu arquivo...n"); fclose(fp); return 0; }
  14. 14. Ex4. Escrevendo em um arquivo [2] #include <stdio.h> int main() { FILE *fp; char frase[] = "Universidade Federal de Minas Gerais"; fp = fopen("file", "w"); for(int i = 0; frase[i]!='0'; i++) fprintf(fp, "%c", frase[i]); return 0; }
  15. 15. Arquivos binários Servem para salvar (recuperar) as informações tais como se encontram na memória principal Permite o manuseio de grandes quantidades de dados de forma mais eficiente (i.e., não sequencial) Um arquivo binário permite a busca por qualquer informação contida no arquivo (fseek)
  16. 16. Arquivos binários int fread(void* p, int tam, int num, FILE *fp); int fwrite(void* p, int tam, int num, FILE *fp); int fseek(FILE *fp, long offset, int origem)
  17. 17. Ex5. Escrevendo um arquivo binário #include <stdio.h> int main() { FILE *fp; fp=fopen("test.bin", "wb"); int x[5]= {1, 2, 3, 4, 5}; fwrite(x, sizeof(x[0]), sizeof(x)/sizeof(x[0]), fp); return 0; }
  18. 18. Referências ● ZIVIANI, Nivio. Projeto de Algoritmos com Implementação em Pascal e C ● C Programming. http://www.cprogramming.com/tutorial/c-tutorial.html ● Tutorials Point. https://www.tutorialspoint.com/c_standard_library

×