Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Estruturas de dados Trabalhar com arquivos em C Prof. Dr. Fa´bio Rodrigues de la Rocha (Trabalhar com arquivos em C) 1 / 11 Arquivos - Introduc¸a˜o Tipos de Arquivos Podemos dividir os arquivos em 2 tipos: Arquivos Texto e arquivos bina´rios. Arquivos Texto sa˜o arquivos que na˜o possuem um formato definido, sendo composto apenas por sequencias de bytes. Podemos ler e escrever sequencias de bytes em arquivos de forma semelhante a ler strings do teclado e escrever strings na tela. Caso seja armazenado um valor ex: 1234567 esse nu´mero gastara´ 7 bytes pois cada um de seus d´ıgitos e´ representado como um caractere. No windows um arquivo texto possue um caractere marcador de fim de arquivo (Ascii 4). (Trabalhar com arquivos em C) 2 / 11 Arquivos - Introduc¸a˜o Tipos de Arquivos - continuac¸a˜o Arquivos bina´rios sa˜o arquivos que possuem uma estrutura definida atrave´s de um typedef ou struct e podemos ler ou gravar elementos com estas estruturas. Podemos tambe´m gravar o valor de varia´veis int, float, double, etc. Caso seja armazenado o valor de nu´mero inteiro 1234567 esse nu´mero (que e´ um inteiro de 32 bits) gastara´ 4 bytes de espac¸o pois um inteiro ocupa 4 bytes. (Trabalhar com arquivos em C) 3 / 11 Arquivos - Formas de acesso Arquivos podem ser acessos de 3 formas: Sequencial E´ a forma mais simples, a leitura e gravac¸a˜o de dados ocorre de forma cont´ınua em posic¸o˜es sequenciais (isto e´, uma apo´s a outra). Direto Na forma de acesso direto, pode-se acessar uma posic¸a˜o ”n” de um arquivo sem acessar as posic¸o˜es anteriores. Indexado Utiliza a forma de acesso direto para criar um arquivo auxiliar de ı´ndices. Este arquivo de ı´ndices sera´ utilizado para faciliar o acesso ao arquivo direto. (Trabalhar com arquivos em C) 4 / 11 Visa˜o dos arquivos (Trabalhar com arquivos em C) 5 / 11 fopen () Abre um arquivo fclose() Fecha um arquivo fputc() e fputs() Escreve um caractere e uma string no arquivo fgetc() e fgets() Leˆ um caractere e uma string de um arquivo fseek() Posiciona o arquivo em um byte espec´ıfico fprintf() E´ para um arquivo o que printf() e´ para o con- sole fscanf() E´ para um arquivo o que scanf() e´ para o con- sole (Trabalhar com arquivos em C) 6 / 11 feof() Verdadeiro se o fim de arquivo for encontrado ferror() Verdadeiro se ocorreu um erro rewind() Recoloca o ponteiro de registro (indicador de posic¸a˜o) no in´ıcio do arquivo remove() Apaga um arquivo fflush() Descarrega um arquivo fread() Leˆ sequencia de bytes de arquivo fwrite() escreve sequencia de bytes em arquivo ftell () Obte´m a posic¸a˜o atual no arquivo (Trabalhar com arquivos em C) 7 / 11 fopen Proto´tipo: FILE *fopen (char *nome do arquivo,char *modo); O primeiro paraˆmetro ”nome do arquivo”: e´ o local onde o arquivo se encontra ou se for criado, onde o arquivo deve ser armazenado. O segundo paraˆmetro ”modo”: especifica como o arquivo deve ser aberto. r Abre um arquivo texto para leitura. w Abrir um arquivo texto para gravac¸a˜o. a Adiciona dados ao final do arquivo rb Abre um arquivo bina´rio para leitura. wb Cria um arquivo bina´rio para escrita ab Acrescenta dados bina´rios no fim do arquivo (Trabalhar com arquivos em C) 8 / 11 Exemplo:Abrindo e fechando arquivos� 1 #include <stdio.h> 2 3 main() 4 { 5 char *str1 = "/mnt/wind/teste/dbase/dbase"; 6 FILE *fp; /* D e c l a r a o da estrutura */ 7 fp=fopen (str1 ,"wb"); /* o arquivo se chama dbase e s t localizado no d i r e t r i o / mnt/wind/teste/dbase */ 8 if (!fp) 9 printf ("Erro na abertura do arquivo."); 10 else 11 printf("Arquivo aberto com sucesso."); 12 13 fclose(fp); 14 }� � (Trabalhar com arquivos em C) 9 / 11 Exemplo:lendo e gravando� 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 void main() { 6 FILE *p; int i; 7 char c, str [40] = "/mnt/wind/teste/facu/teste.txt"; 8 char frase [80] = "Este e um arquivo chamado: "; 9 if (!(p = fopen(str ,"w"))) { 10 printf("Erro! I m p o s s v e l abrir o arquivo !\n"); 11 exit (1); 12 } 13 strcat(frase , str); 14 for (i=0; frase[i]; i++) putc(frase[i],p); 15 fclose(p); 16 p = fopen(str ,"r"); 17 c = getc(p); /* L o primeiro caracter */ 18 while (!feof(p)) { 19 printf("%c",c); /* Imprime o caracter na tela */ 20 c = getc(p); /* L um novo caracter no arquivo */ 21 } 22 fclose(p); /* Fecha o arquivo */ 23 }� � (Trabalhar com arquivos em C) 10 / 11 Exemplo:lendo e gravando� 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 typedef struct { 5 int nome [20]; 6 int telefone [] 7 }REG; 8 9 void main() { 10 FILE *p; int i; char c, str [40] = "/mnt/wind/teste/facu/teste.txt"; 11 char frase [80] = "Este e um arquivo chamado: "; 12 if (!(p = fopen(str ,"w"))) { 13 printf("Erro! I m p o s s v e l abrir o arquivo !\n"); 14 exit (1); 15 } 16 strcat(frase , str); 17 for (i=0; frase[i]; i++) putc(frase[i],p); 18 fclose(p); 19 p = fopen(str ,"r"); 20 c = getc(p); /* L o primeiro caracter */ 21 while (!feof(p)) { 22 printf("%c",c); /* Imprime o caracter na tela */ 23 c = getc(p); /* L um novo caracter no arquivo */ 24 } 25 fclose(p); /* Fecha o arquivo */ 26 }� �(Trabalhar com arquivos em C) 11 / 11
Compartilhar