Roteiro Prático Nº 14 Manipulação de Arquivos

Tamanho: px
Começar a partir da página:

Download "Roteiro Prático Nº 14 Manipulação de Arquivos"

Transcrição

1 UNIVERSIDADE FEDERAL DE ITAJUBÁ UNIFEI CAMPUS ITABIRA BAC004 TÉCNICAS DE PROGRAMAÇÃO Professores: Claudia, Denílson, Fabiana, Fernando, Juliano, Natália, Raquel, Rodrigo, Sandro e Walter Roteiro Prático Nº 14 Manipulação de Arquivos 1) Objetivos: Trabalhar manipulação de arquivos. 2) Livro texto: ASCENCIO, A. F.G., CAMPOS, E.A.V. Fundamentos da Programação de Computadores (Algoritmos, Pascal, C/C++ e Java). Editora: Prentice-Hall, ) Fundamentação Teórica Referência para consulta e estudos: Capítulo 9 do livro texto. 3.1) Arquivos Arquivos são estruturas de dados manipuladas fora da memória principal. Um arquivo, que é armazenado em um dispositivo de memória secundária, como discos, por exemplo, pode ser lido ou escrito por um programa. Um arquivo é formado por uma coleção de registros, cada registro é composto por campos e cada campo possui suas características específicas. Um ou mais campos desse registro é considerado campo-chave, que é o campo que diferencia um registro dos demais, evitando duplicidade de informações. 3.2) Funções mais comuns no sistema de E/S ANSI Um arquivo em C/C++ pode representar diversos elementos, como arquivos em discos, impressoras, teclado ou qualquer outro dispositivo de entrada e saída (E/S). Em C/C++ as funções para acesso e manipulação de arquivos se encontram na biblioteca stdlib.h. Essa biblioteca também define novos tipos de dados para serem usados especificamente com arquivos. Tabela 1 Funções para manipulação de arquivos Função Ação fopen( ) abre um arquivo fclose( ) fecha um arquivo putc( ) e fputc( ) escreve um caractere em um arquivo getc( ) e fgetc( ) lê um caractere em um arquivo fputs() escreve uma string em um arquivo fseek( ) posiciona em um registro do arquivo fprint( ) impressão formatada em um arquivo fscanf( ) leitura formatada em um arquivo feof( ) verifica o final de arquivo fwrite( ) escreve tipos maiores de 1 byte em um arquivo fread( ) lê tipos maiores de 1 byte em um arquivo 3.3) Valores legais para modo de abertura de arquivo Existem vários modos de um arquivo ser acessado por um programa. Esses modem determinam que tipo de operação poderá ser executada sobre o arquivo. Modo r w a rb Tabela 2 Modos de abertura de arquivos Ação abre um arquivo texto para leitura cria um arquivo texto para escrita anexa um arquivo texto abre um arquivo binário para leitura

2 wb cria um arquivo binário para escrita ab anexa um arquivo binário r+ abre um arquivo texto para leitura/escrita w+ cria um arquivo texto para leitura/escrita a+ anexa um arquivo texto para leitura/escrita r+b abre um arquivo binário para leitura/escrita w+b cria um arquivo binário para leitura/escrita a+b anexa um arquivo binário para leitura/escrita 4) Exemplo do uso das funções de manipulação de arquivo 4.1) Programa que efetua leitura do teclado e grava em arquivo O programa a seguir trabalha as funções de abertura de arquivo, fopen(), e inserção de caracteres digitados no teclado pela função putc(). #include <conio.h> #include <stdlib.h> using namespace std; int main (void){ FILE *Arquivo; // Declaração do arquivo char Caractere, Nome[20]; cout << "Nome do arquivo-> "; gets(nome); if ((Arquivo = fopen (Nome,"w")) == NULL){ //Abre o arquivo para com o nome digitado pelo usuário para escrita "w" cout << "Erro abertura\n"; cout << "Arquivo : %s\n" << Nome; // Encerra o programa do{ Caractere = getche(); // Recupera o caractere do teclado if (Caractere == 13){ //Se tecla ENTER pressionada pula uma linha putc('\n',arquivo); puts(""); else putc(caractere,arquivo);//qualquer outra tecla pressionada, insere o caractere no arquivo while (Caractere!= 27); //Se tecla ESC encerra o processo de inserção fclose(arquivo); // Fecha o arquivo system ("pause"); 4.2) Programa que efetua leitura do arquivo e apresenta na tela O programa a seguir trabalha a leitura de caracteres em um arquivo, getc(), e a impressão na tela. #include <conio.h> #include <stdlib.h> using namespace std; int main ( ){ FILE *Arquivo; // Declaração do arquivo char Nome[20]; char Caractere; cout << "Nome do arquivo-> "; gets (Nome); if ((Arquivo = fopen(nome,"r")) == NULL){ //Abre o arquivo para com o nome digitado pelo usuário para leitura "r" cout <<"Erro de abertura\n"; cout <<"Arquivo: %s"<< Nome;

3 while (Caractere!= EOF){ //Encerra o processo quando encontrar o final do arquivo putchar (Caractere); // Imprime um caractere na tela Caractere = getc(arquivo); // Lê o próximo caractere no arquivo e armazena na váriavel Caractere fclose (Arquivo); // Fecha o arquivo system("pause"); 4.3) Programa que insere uma string em um arquivo O programa a seguir trabalha a leitura de caracteres em uma string, em seguida é utilizado a função fputs() para inserir o conteúdo da string no arquivo.. #include <stdlib.h> using namespace std; int main( ){ char string[80]; //Cria um vetor de caracteres char Caractere, Nome[20]; FILE *arquivo; //Declaração do arquivo cout << "Nome do arquivo-> "; gets(nome); if ((arquivo = fopen (Nome,"ab")) == NULL){ //Abre o arquivo do tipo binário cout << "Erro abertura\n"; cout << "Arquivo : %s\n" << Nome; do{ gets(string); //Armazena os caracteres digitados pelo usuário strcat(string,"\n"); //Como gets() não armazena o caractere de nova linha, é adicionado um antes da string ser gravada no arquivo fputs(string,arquivo); //Copia o conteúdo da variável string para o arquivo while(*string!= '\n'); //Para encerrar o programa o usuário deverá inserir uma linha em branco. fclose(arquivo); cout << "Arquivo fechado! Tecle ENTER "; system ("pause > null"); return(0); 4.4) Programa que apaga um arquivo O programa a seguir utiliza a função remove() para apagar um arquivo do sistema. #include <stdlib.h> using namespace std; int main( ){ char opcao, Nome[20]; cout << "Nome do arquivo-> "; gets(nome); cout << "Deseja realmente apagar o arquivo "<< Nome << " (S/N)?"; cin >> opcao; if(toupper(opcao) == 'S') //Transforma para maiúscula a opção do usuário if(remove(nome)){ //Executa o comando para remover o arquivo, caso sucesso retorna 0; caso não retorna valor diferente de 0 cout << "Erro ao tentar apagar arquivo.\n"; system("pause > null"); exit(1); else cout << "Arquivo apagado com sucesso.\n"; system("pause > null"); return(0);

4 4.5) Programa que insere um registro em um arquivo O programa a seguir trabalha a inserção de registros em um arquivo. #include <stdlib.h> using namespace std; struct Tregistro{ char nome[30]; long int telefone; ; int main ( ){ Tregistro cliente; //Cria a variável cliente do tipo Tregistro FILE *Arquivo; //Declara o arquivo char auxiliar[5]; if ((Arquivo = fopen ("Dados.dat","w+b")) == NULL){ //Abre o Dados.dat no formato binário com permissão de escrita cout << "Erro na abertura do arquivo"; cout << "Pressione ENTER com campo nome vazio para terminar"; cout << ""; do{ cout << "\nentre um nome... : "; fflush(stdin); gets (cliente.nome); cout << "Entre com telefone : "; if (strcmp (cliente.nome,"")!= 0){ gets (auxiliar); cliente.telefone = atol(auxiliar); //Converte a string digitada para inteiro longo (long int) fwrite (&cliente, sizeof(tregistro), 1, Arquivo); //Copia o dados digitados do registro para o arquivo while (strcmp(cliente.nome,"")!= 0); //Encerra a repetição do processo de inserção de registros no arquivo rewind (Arquivo); //Configura o indicador de posição no inicio do arquivo cout << "\n\nlistagem do arquivo\n"; cout << " \n"; cout << "nome \t\ttelefone\n"; while (!feof (Arquivo)){ //Realiza a impressão na tela até encontrar o final do arquivo fread (&cliente, sizeof(tregistro), 1, Arquivo); //Lê uma estrutura do tamanho Tregistro no Arquivo e armazena na posição de memória da variável cliente if (!feof (Arquivo)) cout << cliente.nome << "\t\t" << cliente.telefone << endl; system ("pause > null"); 4.6) Programa que cria um registro ativo em um arquivo O programa a seguir trabalha a inserção de registros em um arquivo, com campo ativo. O campo ativo é utilizado para considerar se um registro deve ser listado (se ele existe) ou não listado (se foi excluído) em um arquivo de dados. #include <iostream.h> #include <stdlib.h> using namespace std; struct Taluno{ int numero, ativo; //Campo ativo possui finalidade de incluir ou excluir um registro char nome[30]; ;

5 int main(){ FILE *Arquivo; Taluno aluno, alunocadastrado; if ((Arquivo = fopen ("Alunos.dat","a+")) == NULL){ //Abre o Alunos.dat no formato texto para anexo de informações cout << "Erro na abertura do arquivo"; else { cout << "\ndigite o numero do aluno a ser incluido: "; cin >> aluno.numero; cout << "\ndigite o nome do aluno: "; fflush(stdin); gets(aluno.nome); aluno.ativo = 1; //Atribui 1 para tornar registro ativo no arquivo while ((!feof(arquivo)) && (aluno.numero!= alunocadastrado.numero))//compara os registros do arquivo com o registro que deseja inserir fread(&alunocadastrado, sizeof(taluno), 1, Arquivo);//Lê os registros armazenados no arquivo e atribui para alunocadastrado if (feof(arquivo)){ //Caso percorra todos os registros e não encontre o número de matrícula cadastra o aluno fwrite(&aluno, sizeof(taluno), 1, Arquivo); //Escreve o registro no final do arquivo cout << "\naluno incluido com sucesso!"; else cout << "\nnumero ja cadastrado!"; fclose(arquivo); system ("pause > null"); 4.7) Programa que desativa (exclui) um registro em um arquivo O programa a seguir trabalha a exclusão lógica de um registro, ou seja, o campo que indica se ele está ativo é modificado para que o registro passe a não ser listado, quando se exibe o conteúdo do arquivo de dados. Neste programa também é trabalhada a função fseek() que posiciona o ponteiro dos registros no registro que se deseja alterar. #include <iostream.h> #include <stdio.h> struct Taluno{ int numero, ativo; char nome[30]; ; int main(){ FILE *Arquivo, *auxi; Taluno aluno; int numero; int contador; //Variável que conta a posição onde o registro procurando é encontrado if ((Arquivo = fopen ("Alunos.dat","a+")) == NULL){ //Abre o Alunos.dat no formato texto para anexo de informações cout << "Erro na abertura do arquivo"; else { cout << "\ndigite o numero do aluno: "; cin >> numero; contador=0; //Conta os registro até o final do arquivo enquanto não encontrar o numero

6 de aluno digitado while ((!feof(arquivo)) && ((numero!= aluno.numero) ((numero == aluno.numero) && (aluno.ativo!= 1)))){ fread(&aluno, sizeof(taluno), 1, Arquivo); contador++; if (feof(arquivo)) cout << "\naluno nao cadastrado!"; else { rewind(arquivo); //Coloca ponteiro de leitura dos registros no início do arquivo fseek(arquivo, contador*sizeof(aluno), SEEK_SET); //Posiciona o ponteiro no registro indicado pela variável contador aluno.ativo = 0; //Desativa o registro fwrite(&aluno, sizeof(taluno), 1, Arquivo); //Escreve o registro aluno no arquivo cout << "\nexclusao realizada com sucesso!"; fclose(arquivo); system ("pause > null"); 4.8) Programa lista os registros ativos em um arquivo O programa abaixo lista apenas os registros ativos no arquivo de dados. #include <iostream.h> #include <stdio.h> struct Taluno{ int numero, ativo; char nome[30]; ; int main(){ FILE *Arquivo; Taluno aluno; if ((Arquivo = fopen ("Alunos.dat","a+")) == NULL){ //Abre o Alunos.dat no formato texto para anexo de informações cout << "Erro na abertura do arquivo"; else { if (feof(arquivo)) cout << "\narquivo vazio!"; else { //Enquando não encontrar final do arquivo lista os registros while (!feof(arquivo)){ if (aluno.ativo == 1){ //Lista apenas registros ativos cout << "\nnome: " << aluno.nome; cout << "\nmatricula: " << aluno.numero; fread(&aluno, sizeof(taluno), 1, Arquivo); fclose(arquivo); system ("pause > null");

7 5) Roteiro: Examinando cuidadosamente os exemplos mostrados acima e o material de apoio realize as atividades a seguir: a) Tendo como base os exemplos apresentados, faça um programa para criar um arquivo chamado contas_bancarias.dat para armazenar registros compostos pelos seguintes campos: número da conta, nome do titular, saldo e data de abertura. b) Altere o programa anterior para incluir contas bancárias no arquivo criado, considerando que não deve haver duas contas bancárias com o mesmo número. c) Faça um programa para visualizar todas as contas bancárias inseridas no arquivo contas_bancarias.dat. d) Faça um programa, que implemente as funções do seguinte menu de opções: 1. Incluir uma conta bancária 2. Visualizar todas as contas bancárias 3. Visualizar o saldo de uma conta bancária 4. Alterar o saldo de uma conta bancária 5. Excluir uma conta bancária 6. Sair do programa Se der tempo faça também... e) Acrescente e implemente as seguintes funções ao programa da letra d): 7. Visualizar a conta com maior saldo 8. Visualizar as contas com saldo negativo

8 6) Manipulação de Arquivos Material de Apoio 6.1) Introdução Arquivos são estruturas de dados manipuladas fora da memória principal. Um arquivo, que é armazenado em um dispositivo de memória secundária, como discos, por exemplo, pode ser lido ou escrito por um programa. Um arquivo é formado por uma coleção de registros, cada registro é composto por campos e cada campo possui suas características específicas. Um ou mais campos desse registro é considerado campo-chave, que é o campo que diferencia um registro dos demais, evitando duplicidade de informações. Um sistema de banco de dados é composto por um ou vários arquivos, onde cada arquivo possui programas de manutenção que são: inclusão, exclusão lógica ou exclusão física, alteração, consulta geral, consulta específica e relatórios. Existem dois tios de exclusão de registros: a exclusão física, em que após a eliminação de um registro, os demais registros são deslocados, e a exclusão lógica, em que os registros possuem um campo adicional, identificando se os mesmos estão ativos ou inativos, isto é, se foram excluídos. 6.2) Entrada e saída com arquivo O sistema de E/S de C/C++ utiliza o conceito de streams e arquivos. Um stream é um dispositivo lógico que representa um arquivo ou dispositivo. Um stream é independente do arquivo ou dispositivo. Devido a isso, a função que manipula um stream pode escrever tanto em um arquivo no disco quanto em algum outro dispositivo, como o monitor. Existem dois tipos de streams: de texto e binária. Em um stream de texto podem ocorrer certas traduções de acordo com o sistema hospedeiro. Por exemplo, um caractere de nova linha pode ser convertido para os caracteres retorno de carro e alimentação de linha. Devido a isso pode não haver uma correspondência entre os caracteres da stream e do dispositivo externo; a quantidade de caracteres pode não ser a mesma. Um stream binário é uma seqüência de bytes com uma correspondência de um para um com os bytes encontrados no dispositivo externo. Isto é, não ocorre nenhuma tradução de caracteres. O número de bytes é o mesmo do dispositivo. Um arquivo é interpretado pela linguagem C/C++ como qualquer dispositivo, desde um arquivo em disco até um terminal ou uma impressora. Para utilizar um arquivo você deve associá-lo a um stream e, então, manipular o stream. Você associa um arquivo a um stream através de uma operação de abertura. Nem todos os arquivos tem os mesmos recursos. Por exemplo, um arquivo em disco pode suportar acesso aleatório enquanto um teclado não. Se o arquivo suporta acesso aleatório, abrí-lo inicializa o indicador de posição apontando para o começo do arquivo. Quando cada caractere é lido ou escrito no arquivo, o indicador de posição é incrementado. Um arquivo é desassociado de um stream através de uma operação de fechamento. Se um arquivo aberto para saída for fechado, o conteúdo de sua stream será escrito no dispositivo externo. Esse processo é geralmente chamado de descarga (flushing) da stream e garante que nenhuma informação seja acidentalmente deixada no buffer de disco. Um stream associa o arquivo a uma estrutura do tipo FILE ) Ponteiro para arquivo O ponteiro de arquivo une o sistema de E/S com um buffer. O ponteiro não aponta diretamente para o arquivo em disco e sim contém informações sobre o arquivo, incluindo nome, status (aberto, fechado) e posição atual sobre o arquivo. Para se definir uma variável ponteiro de arquivo usa-se o a seguinte declaração: FILE *Arquivo; Desta forma, passa a existir uma variável de nome Arquivo que é ponteiro de arquivo.

9 Tabela 3 - Funções mais comuns no sistema de E/S ANSI Função Ação fopen() abre um arquivo fclose() fecha um arquivo putc() e fputc() escreve um caractere em um arquivo getc() e fgetc() lê um caractere em um arquivo fseek() posiciona em um registro do arquivo fprintf() impressão formatada em arquivo fscanf() leitura formatada em arquivo feof() verifica o final de arquivo fwrite() escreve tipos maiores que 1 byte em um arquivo fread() lê tipos maiores que 1 byte em um arquivo 6.2.2) Abrindo arquivo A função que abre arquivo em C é a função fopen( ). Ela devolve NULL (nulo) ou um ponteiro associado ao arquivo, devendo ser passado para função o nome físico do arquivo e o modo como este arquivo deve ser aberto. Exemplo: Arquivo = fopen("teste.dat","w"); Com a instrução anterior, está sendo aberto um arquivo de nome "Teste.dat", no disco, habilitado apenas para escrita (write). Utilizando técnicas de verificação, poderemos codificar a instrução anterior da seguinte maneira: if ((Arquivo = fopen("teste.dat","w")) == NULL) { puts ("Arquivo nao pode ser aberto..."); Tabela 4 - Valores legais para MODO de Abertura de arquivo Modo Ação R abre um arquivo texto para leitura W cria um texto para escrita A anexa um arquivo texto Rb abre um arquivo binário para leitura Wb cria um arquivo binário para escrita Ab anexa um arquivo binário r+ abre texto para leitura/escrita w+ cria texto para leitura/escrita a+ anexa texto para leitura/escrita r+b abre um arquivo binário para leitura/escrita w+b cria um arquivo binário para leitura/escrita a+b anexa um arquivo binário para leitura/escrita 6.2.3) Fechando um arquivo A função que fecha e esvazia o buffer de um arquivo é a função fclose( ), que associa-se diretamente ao nome lógico do arquivo (STREAM). Exemplo: fclose(arquivo); Esse comando escreve qualquer dado que ainda permanece no buffer de disco no arquivo e o fecha em nível de sistema operacional. Uma falha ao fechar um stream pode provocar problemas tipo perda de dados, arquivos destruídos e erros intermitentes em seu programa. O fclose também libera o bloco de controle de arquivo associado ao stream, deixando-o disponível para reutilização. Como, normalmente, há um limite do sistema operacional para o número de arquivos abertos ao mesmo tempo, você deve fechar um arquivo antes de abrir outro ) Escrevendo e lendo caracteres Para escrever um caractere num arquivo aberto, deve-se usar duas funções: putc( ) ou fputc( ). Elas são idênticas. Existem as duas para preservar a compatibilidade com versões mais antigas de C/C++. É lógico que para escrever num arquivo este deve ter sido aberto num modo que permita a escrita. A sintaxe para escrever é:

10 putc(caracter, ARQUIVO); Onde CARACTER é o caractere a ser escrito no arquivo e ARQUIVO é um ponteiro de arquivo. Se ocorrer tudo bem, a função retorna o caractere escrito, caso contrário ela retorna EOF (fim do arquivo). Para ler um caractere temos também duas funções: getc( ) e fgetc( ). Existem duas também pelo motivo da compatibilidade com versões mais antigas da linguagem. O arquivo deve ter sido aberto num modo que permita a leitura. A sintaxe é: getc(arquivo); Onde ARQUIVO é um ponteiro de arquivo. Quando o final do arquivo é alcançado a função devolve EOF. Para ler o conteúdo de um arquivo você poderia usar um trecho de código parecido com: do { caractere = getc(arquivo); while(caractere!= EOF); Sendo caractere uma variável char e arquivo uma variável ponteiro para uma estrutura FILE. É importante observar que getc também devolve EOF caso ocorra algum erro. /* Programa que efetua leitura do arquivo e apresenta na tela */ #include <conio2.h> int main ( ){ FILE *Arquivo; char Nome[20]; signed char Caractere; clrscr (); printf ("Nome do arquivo-> "); gets (Nome); if ((Arquivo = fopen(nome,"r+")) == NULL){ std::cout <<"Erro de abertura\n"; std::cout <<"Arquivo: %s"<< Nome; Caractere = getc(arquivo); while (Caractere!= EOF){ putchar (Caractere); Caractere = getc(arquivo); fclose (Arquivo); system("pause");

11 6.2.5) Verificando o final de um arquivo binário Quando manipulando dados binários um valor inteiro igual a EOF pode ser lido por engano. Isso poderia fazer com que fosse indicado o fim de arquivo antes deste ter chegado. Para resolver este problema C/C++ inclui a função feof( ) que determina quando o final de um arquivo foi atingido. Ela tem a seguinte sintaxe: feof(arquivo); onde ARQUIVO é um ponteiro de arquivo. Esta função devolve verdadeiro caso o final de arquivo seja atingido; caso contrário ela devolve 0. Para ler um arquivo binário você poderia usar o seguinte trecho de código: while(!feof(arquivo)) caracter = getc(arquivo); /* programa que copia arquivo */ #include <conio2.h> int main( ){ FILE *Arquivo1,*Arquivo2; char caractere, Original[20], Copia[20]; clrscr(); printf("\n Nome do arquivo de origem -> "); gets(original); printf("\n Nome do arquivo de destino -> "); gets(copia); if ((Arquivo1 = fopen (Original,"rb")) == NULL){ std::cout << "Erro abertura do arquivo 1\n"; std::cout << "Arquivo : %s\n" << Original; if ((Arquivo2 = fopen (Copia,"wb")) == NULL){ std::cout << "Erro abertura do arquivo 2\n"; std::cout << "Arquivo : %s\n" << Copia; if(strcmp(original,copia) == 0){ printf("\no nome do arquivo original não pode ser igual ao da cópia.\n\n"); getch(); exit(1); ; while(!feof(arquivo1)){ caractere = getc(arquivo1); if(!feof(arquivo1)) putc(caractere,arquivo2); fclose(arquivo1); fclose(arquivo2); printf("\n%s copiado com sucesso com o nome de %s.\n\n",original,copia); system ("pause");

12 return(0); 6.2.6) Escrevendo e lendo strings Para escrever e ler strings em um arquivo deve-se utilizar as funções fputs( ) e fgets( ). A função fputs( ) escreve uma string no stream especificado, sua sintaxe é: fputs(string,arquivo); onde ARQUIVO é um ponteiro de arquivo. Caso ocorra algum erro esta função retorna EOF. A função fgets( ) lê uma string do stream especificado. Sua sintaxe é: fgets(string,tamanho,arquivo); Ela lê STRING até que um caractere de nova linha seja lido ou que TAMANHO - 1 caracteres tenham sido lidos. Se uma nova linha é lida ela será parte da string. A string resultante terminará em nulo. Caso ocorra tudo bem esta função retornará um ponteiro para STRING, caso contrário, retornará um ponteiro nulo ) Apontando para o início do arquivo Para apontar para o início do arquivo utiliza-se a função rewind( ). Sua sintaxe é: sendo ARQUIVO um ponteiro de arquivo. rewind(arquivo); /* Programa que escreve strings em um arquivo. * Para encerrar o programa o usuário deverá inserir uma linha em branco. * Como gets() não armazena o caractere de nova linha, é adicionado um antes da string * ser gravada no arquivo. Isto é feito para que a string possa ser lida, posteriormente, * com fgets() já que esta função lê a string até que seja encontrado um caracter de nova * linha. */ #include <conio2.h> int main( ){ char string[80]; char Caractere, Nome[20]; FILE *arquivo; clrscr(); printf("nome do arquivo-> "); gets(nome); if ((arquivo = fopen (Nome,"ab")) == NULL){ std::cout << "Erro abertura\n"; std::cout << "Arquivo : %s\n" << Nome; do{ gets(string); strcat(string,"\n");

13 fputs(string,arquivo); while(*string!= '\n'); fclose(arquivo); puts("arquivo fechado! Tecle ENTER "); getch(); return(0); 6.2.8) Verificando erros Para determinar se uma operação com o arquivo produziu um erro utiliza-se a função ferror( ), e sua sintaxe é: ferror(arquivo); sendo ARQUIVO um ponteiro de arquivo. Esta função retorna verdadeiro se ocorreu um erro durante a última operação com o arquivo, caso contrário retorna falso. Como cada operação modifica a condição de erro, ela deve ser chamada logo após cada operação realizada com o arquivo ) Apagando um arquivo Para apagar uma arquivo utiliza-se a função remove( ). Sua sintaxe é: sendo ARQUIVO um ponteiro de arquivo. /* programa que apaga um arquivo */ #include <conio2.h> int main( ){ char opcao, Nome[20]; clrscr(); printf("nome do arquivo-> "); gets(nome); remove(arquivo); printf("deseja realmente apagar o arquivo %s (S/N)?",Nome); opcao = getch(); if(toupper(opcao) == 'S') if(remove(nome)){ printf("erro ao tentar apagar arquivo.\n"); getch(); exit(1); else printf("arquivo apagado com sucesso.\n"); system("pause"); return(0); ) Renomeando ou movendo um arquivo Para renomear um arquivo utiliza-se a função rename( ). Sua sintaxe é: rename(nome_antigo, NOVO_NOME);

14 onde NOME_ANTIGO e NOVO_NOME são ponteiros string. Se a função for bem sucedida ela retornará zero, caso contrário, retornará um valor diferente de zero. Esta mesma função serve para mover um arquivo. Basta incluir a nova localização como parte do NOVO_NOME do arquivo. /* renomeando ou movendo um arquivo */ #include <conio2.h> int main( ){ char Nome1[20], Nome2[20]; clrscr(); printf("nome do arquivo original -> "); gets(nome1); printf("novo nome para o arquivo -> "); gets(nome2); if(rename(nome1, Nome2)) printf("erro ao renomear arquivo!\n"); system("pause"); return(0); ) Esvaziando um stream Para esvaziar o conteúdo de um stream aberto para saída utiliza-se a função fflush(). Sua sintaxe é: fflush(arquivo); sendo ARQUIVO um ponteiro de arquivo. Ela escreve o conteúdo do buffer para o arquivo passado como argumento. Se for passado um valor nulo, todos os arquivos abertos para saída serão descarregados. Se tudo ocorrer bem fflush retornará zero, indicando sucesso. Caso contrário, devolverá EOF ) Escrevendo e lendo tipos de dados definidos pelo usuário C/C++ permite que o usuário crie seus próprios tipos de dados. Estes tipos de dados são estruturas compostas de tipos de dados simples e com estas estruturas pode-se construir registros. Para escrever e ler estas estruturas pode-se usar as funções fread( ) e fwrite( ). A sintaxe de fread( ) é: onde: fread(variável,tamanho,quantidade,arquivo); - VARIÁVEL é o endereço da variável que receberá os dados lidos do arquivo; - TAMANHO é o número de bytes a ser lido. Para calcular isso você deve usar o operador sizeof ; - QUANTIDADE indica quantos itens serão lidos (cada item do tamanho de TAMANHO) ; - ARQUIVO é um ponteiro para o arquivo aberto anteriormente. A sintaxe para fwrite( ) é idêntica, com a exceção que VARIÁVEL é o endereço da variável com os dados a serem escritos no arquivo. O ponteiro de arquivo "ARQUIVO" deve ser aberto em modo binário, para podermos ler e escrever qualquer tipo de informação. Também deve ser aberto de acordo com a operação a ser feita (leitura ou escrita).

15 fread devolve o número de itens lidos. Esse valor poderá ser menor que QUANTIDADE se o final do arquivo for atingido ou ocorrer um erro. fwrite devolve o número de itens escritos. Esse valor será igual a QUANTIDADE a menos que ocorra um erro. Para exemplificar o trabalho com estruturas (registros) e arquivos em C/C++, segue um programa que lê estruturas de dois campos (Nome e Telefone) e grava um arquivo denominado "Dados.dat". Este processo é terminado com a digitação do campo Nome vazio; então o programa apresenta todos os registros do arquivo que acaba de ser gerado. /* Exemplifica o uso de fread() e fwrite() em arquivos */ #include <conio2.h> // Definindo o registro typedef struct{ char Nome[30]; long int Telefone; Registro; int main ( ){ Registro Clientes; FILE *Arquivo; char Auxiliar[5]; clrscr (); //Abrindo o arquivo if ((Arquivo = fopen ("Dados.dat","w+b")) == NULL){ puts ("Erro na abertura do arquivo"); getch(); puts ("Digite enter no NOME para terminar"); puts (""); // Lendo e gravando o registro do{ printf ("\nentre um nome... : "); gets (Clientes.Nome); printf ("Entre com telefone : "); if (strcmp (Clientes.Nome,"")!= 0){ gets (Auxiliar); Clientes.Telefone = atol(auxiliar); fwrite (&Clientes, sizeof(registro), 1, Arquivo); while (strcmp(clientes.nome,"")!= 0); // Posicionando no inicio do arquivo para listagem geral rewind (Arquivo); printf ("\n\nlistagem do arquivo\n"); puts (" \n"); printf ("%-20s %10s\n", "NOME", "TELEFONE"); while (!feof (Arquivo)){ fread (&Clientes, sizeof(registro), 1, Arquivo); if (!feof (Arquivo)) printf("%-20s %10ld\n",Clientes.Nome,Clientes.Telefone); getch ();

16 6.2.13) Apontando para uma posição específica dentro do arquivo Você pode apontar para um byte específico dentro do arquivo movimentando o indicador de posição. Isto pode ser feito com o uso da função fseek( ),cuja sintaxe é: fseek(arquivo, NÚMERO_DE_BYTES, ORIGEM); onde ARQUIVO é um ponteiro de arquivo aberto anteriormente, NÚMERO_DE_BYTES é a quantidade de bytes que o indicador de posição será movimentado e ORIGEM é a partir de onde o movimento do indicador de posição iniciará. ORIGEM deve ser uma das seguintes macros: SEEK_SET permite a movimentação de NUMERO_DE_BYTES a partir da posição inicial do arquivo; SEEK_CUR permite a movimentação de NUMERO_DE_BYTES a partir da posição atual do arquivo; SEEK_END permite a movimentação de NUMERO_DE_BYTES a partir da posição final do arquivo. /* Exemplifica a Manutencao de arquivo sequencial */ #include <conio2.h> // Definindo o registro typedef struct{ char Nome[30]; char Telefone[15]; int Status; Registro; // Ponteiro para o arquivo FILE *Arquivo; // Protótipo para funções int Insere (Registro Dados); void Lista (void); int Retira (Registro Dados); void Entra (Registro *Dados); int Consulta (Registro *Dados); char Menu (void); void Mensagem (char *Aviso); void Escreve (char *Cadeia); // Função principal int main ( ){ Registro Clientes; char Opcao; clrscr (); // Abertura do arquivo if ((Arquivo = fopen ("Clientes.dat", "rb+")) == NULL) if ((Arquivo = fopen ("Clientes.dat", "wb+")) == NULL){ puts ("Erro na abertura do arquivo"); do{ Opcao = Menu(); printf ("\n\n"); switch (Opcao){

17 case '1' : Escreve ("Inserção"); Entra (&Clientes); if (Insere (Clientes)) Mensagem ("Insercao OK"); else Mensagem ("Erro na insercao\n"); break; case '2' : Escreve ("Remoção"); printf ("\n Entre com um nome... :"); gets (Clientes.Nome); if (Retira (Clientes)) Mensagem ("Remocao OK\n"); else Mensagem ("Erro na remocao\n"); break; case '3' : Escreve ("Lista"); Lista (); break; case '4' : Escreve ("Consulta"); printf ("\n Entre com um nome... :"); gets (Clientes.Nome); if (Consulta (&Clientes)){ printf ("\nnome: %-30s, TEL: %-15s\n\n", Clientes.Nome, Clientes.Telefone); Mensagem (""); else Mensagem ("NOME nao encontrado\n"); while (Opcao!= '5'); puts ("fim do programa..."); fclose (Arquivo); system("pause"); // Implementação das funções e sub-rotinas // Desenha menu na tela char Menu (void){ clrscr (); gotoxy (1,1); puts ("MENU : "); puts ("1. Insere "); puts ("2. Retira "); puts ("3. Lista "); puts ("4. Consulta"); puts ("5. Fim"); printf ("\nescolha ==>"); return getch (); // Escreve uma mensagem na tela void Mensagem (char *Aviso){ gotoxy (1,23); puts (Aviso); gotoxy (1,24); puts ("Digite qualquer tecla..."); getch (); // Escreve uma string numa posição da tela void Escreve (char *Cadeia){ textbackground (15);

18 textcolor (0); gotoxy (12,8); cputs (Cadeia); textbackground (0); textcolor (7); // Lê os dados do registro void Entra (Registro *Dados){ printf ("\n Entre com um nome... :"); gets (Dados->Nome); printf (" Entre com um telefone :"); gets (Dados->Telefone); Dados->Status = 1; // Grava o registro int Insere (Registro Dados){ if (!fseek (Arquivo, 0, SEEK_END)){ fwrite (&Dados, sizeof (Registro), 1, Arquivo); return 1; // Retira o registro int Retira (Registro Dados){ Registro Auxiliar; fseek (Arquivo, 0, SEEK_SET); while (!feof (Arquivo)){ fread (&Auxiliar, sizeof(auxiliar), 1, Arquivo); if (!strcmp (Auxiliar.Nome, Dados.Nome) && (Auxiliar.Status)){ Auxiliar.Status = 0; fseek (Arquivo, -1L*sizeof (Registro), SEEK_CUR); if (fwrite (&Auxiliar, sizeof (Registro), 1, Arquivo)) return 1; // Lista o conteúdo de um arquivo void Lista (void){ Registro Auxiliar; char Traco[47]; int Linha = 11; // posiciona no topo do arquivo rewind (Arquivo); gotoxy (1,9); printf ("\n%-30s %-15s", "Nome", "Telefone"); while (!feof (Arquivo)){ fread (&Auxiliar, sizeof(registro), 1, Arquivo); if ((Auxiliar.Status) && (!feof (Arquivo)) && (Linha <= 22)){ gotoxy (1, Linha); printf ("\n%-30s %-15s",Auxiliar.Nome, Auxiliar.Telefone); Linha++; if (Linha == 22){ Linha = 11; Mensagem (""); clrscr();

19 Mensagem (""); printf ("\n\n"); // Consulta um registro int Consulta (Registro *Dados){ Registro Auxiliar; fseek (Arquivo, 0, SEEK_SET); while (!feof (Arquivo)){ fread (&Auxiliar, sizeof (Registro), 1, Arquivo); if (!strcmp (Auxiliar.Nome, Dados->Nome) && (Auxiliar.Status)){ *Dados = Auxiliar; return 1;

Programação para Computação 13ª Aula

Programação para Computação 13ª Aula Programação para Computação 13ª Aula Arquivos em C O sistema de E/S da linguagem C utiliza o conceito de streams e arquivos, como um nível de abstração entre o programador e o dispositivo utilizado. Uma

Leia mais

Computação 2. Aula 8. Profª. Fabiany Arquivos

Computação 2. Aula 8. Profª. Fabiany Arquivos Computação 2 Aula 8 Arquivos Profª. Fabiany fabianyl@utfpr.edu.br E/S com Arquivos A linguagem C não possui nenhum comando de E/S. Todas as operações de E/S ocorrem mediante chamadas a funções de biblioteca

Leia mais

13a. Aula Manipulação de arquivos

13a. Aula Manipulação de arquivos 13a. Aula Manipulação de arquivos 2013.2 O sistema de entrada e saída do ANSI C é composto por uma série de funções (fopen, fprintf, fgets, fclose) cujos protótipos estão reunidos em stdio.h Todas estas

Leia mais

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos: CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta

Leia mais

Algoritmos e Estruturas de Dados II IEC013

Algoritmos e Estruturas de Dados II IEC013 Algoritmos e Estruturas de Dados II IEC013 Linguagem C - Arquivos - Prof. César Melo cavmelo@dcc.ufam.edu.br Slides preparados pelo Prof. Leandro Galvão galvao@dcc.ufam.edu.br Conceitos iniciais Um arquivo

Leia mais

Computação 2. Aula 9. Diego Addan Arquivos

Computação 2. Aula 9. Diego Addan Arquivos Computação 2 Aula 9 Arquivos Diego Addan diegoaddan@gmail.com E/S com Arquivos A linguagem C não possui nenhum comando de E/S. Todas as operações de E/S ocorrem mediante chamadas a funções de biblioteca

Leia mais

Arquivos em C. Material da Prof. Ana Eliza

Arquivos em C. Material da Prof. Ana Eliza em C Material da Prof. Ana Eliza Definição Um arquivo é uma estrutura de dados linear ( lista ) que é mantida fora da memória principal, em um dispositivo de armazenamento (memória secundária). Um arquivo

Leia mais

Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos. Profa. Elaine Faria UFU

Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos. Profa. Elaine Faria UFU Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos Profa. Elaine Faria UFU - 2017 Uso da Memória Secundária Em muitos casos necessitamos da memória secundária (auxiliar), para armazenar informações

Leia mais

Aula 16: Manipulação de Arquivos em C

Aula 16: Manipulação de Arquivos em C Aula 16: Manipulação de Arquivos em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Manipulação de Arquivos Programação de Computadores IV 1 / 33

Leia mais

LINGUAGEM C: ARQUIVOS

LINGUAGEM C: ARQUIVOS LINGUAGEM C: ARQUIVOS Prof. André Backes ARQUIVOS Por que usar arquivos? Permitem armazenar grande quantidade de informação; Persistência dos dados (disco); Acesso aos dados poder ser não seqüencial; Acesso

Leia mais

Programação II. Arquivos - Conceito. Arquivos

Programação II. Arquivos - Conceito. Arquivos Programação II Arquivos Jocélio Passos joceliodpassos@bol.com.br C Comp Total, Cap 9 Espaço para armazenar dados em memória auxiliar (não volátil) Arquivos em C podem ser também terminais ou impressoras

Leia mais

Manipulação de Arquivos

Manipulação de Arquivos Manipulação de Arquivos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Tipo

Leia mais

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos Aula: ARQUIVOS Introdução à Ciência da Computação I Simone Senger Souza ICMC/USP São Carlos Introdução As estruturas vistas anteriormente armazenam as informações na memória principal do computador. Nem

Leia mais

Existe uma quantidade de informação que pode ser armazenada para resolver o problema.

Existe uma quantidade de informação que pode ser armazenada para resolver o problema. Arquivos Introdução As estruturas vistas anteriormente armazenam as informações na memória principal do computador. Nem sempre é conveniente. Problemas: A informação é perdida; As estruturas de dados são

Leia mais

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza Introdução Manipulação de arquivos em C Estrutura de Dados II Prof Jairo Francisco de Souza Manipulação de Arquivo em C Existem dois tipos possíveis de acesso a arquivos na linguagem C : sequencial (lendo

Leia mais

LINGUAGEM C: ARQUIVOS

LINGUAGEM C: ARQUIVOS LINGUAGEM C: ARQUIVOS Prof. André Backes Arquivos 2 Por que usar arquivos? Permitem armazenar grande quantidade de informação; Persistência dos dados (disco); Acesso aos dados poder ser não seqüencial;

Leia mais

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br Computação Eletrônica Aula 12 Arquivos Texto e Binário Prof: Luciano Barbosa Relembrando a Arquitetura Básica de um Computador Até agora, toda a informação armazenada por nossos programas estava na memória

Leia mais

Manipulação de Arquivos

Manipulação de Arquivos Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Manipulação de Arquivos Linguagem de Programação Estruturado Sumário Introdução; E/S ANSI Versus E/S UNIX; E/S em C Versus E/S

Leia mais

Arquivos em C Parte 2

Arquivos em C Parte 2 Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Arquivos em C Parte 2 Profa Rosana Braga Material preparado pela profa Silvana Maria Affonso de Lara 1º semestre de

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO Arquivo Conceitos Arquivo Fluxo de bytes stream Linguagem C Estrutura do tipo FILE FILE contém informações do arquivo Tamanho Ponteiro para buffer dados Atual operação sobre o arquivo

Leia mais

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE:

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE: E/S em Arquivo A linguagem C não contém nenhum comando de E/S. O sistema de E/S de C provê um nível de abstração entre o programador e o dispositivo utilizado. Abstração stream Dispositivo real arquivo

Leia mais

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Arquivos em C

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Arquivos em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Arquivos em C 1 Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO DA AULA Arquivos

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Arquivos Funções para abrir e fechar arquivos Arquivos em modo texto Arquivos em modo binário ATENÇÃO

Leia mais

Linguagem C. Armazenamento de Dados em Arquivos - Continuação

Linguagem C. Armazenamento de Dados em Arquivos - Continuação Linguagem C Armazenamento de Dados em Arquivos - Continuação Arquivos Binários Comandos para gravação e leitura de arquivos (revisão): FILE *arquivo; arquivo = fopen( nome, modo ); fwrite (&variavel, sizeof

Leia mais

Structs, Ponteiros e Arquivos. Prof. Maurício Dias

Structs, Ponteiros e Arquivos. Prof. Maurício Dias Structs, Ponteiros e Arquivos Prof. Maurício Dias Registros e structs Um registro (= record) é uma coleção de várias variáveis, possivelmente de tipos diferentes. Na linguagem C, registros são conhecidos

Leia mais

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL REGISTROS E ARQUIVOS. Profa. Dra. Milena Guessi Margarido

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL REGISTROS E ARQUIVOS. Profa. Dra. Milena Guessi Margarido SSC 301 - INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL REGISTROS E ARQUIVOS Profa. Dra. Milena Guessi Margarido (milena@icmc.usp.br) Número Bairro CEP Cidade Logradouro Endereço País REGISTRO Estrutura

Leia mais

Arquivos. Programação de Computadores I. Natália Batista.

Arquivos. Programação de Computadores I. Natália Batista. Arquivos Programação de Computadores I Natália Batista nataliabatista@decom.cefetmg.br 1. Arquivos Estruturas de dados armazenadas fora da memória principal do computador, por exemplo em discos. Usados

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 17. Manipulação de arquivos binários.

CURSO BÁSICO DE PROGRAMAÇÃO AULA 17. Manipulação de arquivos binários. CURSO BÁSICO DE PROGRAMAÇÃO AULA 17 Manipulação de arquivos binários. Revisão Abrindo arquivos de texto em C FILE *arquivo = fopen(, ); FILE: Tipo do objeto de arquivo. fopen: Função

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: Manipulação de arquivos Prof. Renato Pimentel 1 Introdução Até o momento, trabalhamos com programas que utilizam apenas a memória

Leia mais

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I Aula 13 Arquivos Responsável Seiji Isotani, Rafaela V. Rocha sisotani@icmc.usp.br rafaela.vilela@gmail.com

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Arquivos Prof. Fabio Henrique N. Abe fabio.henrique.abe@gmail.com 99642-5002 http://www.comp.uems.br/~fhna/ Exercícios 1 de Agora valendo 2,0 dos trabalhos para a P4! Entrega

Leia mais

Arquivos em C. Notas de Aula. Prof. Francisco Rapchan

Arquivos em C. Notas de Aula. Prof. Francisco Rapchan Arquivos em C Notas de Aula Prof. Francisco Rapchan www.geocities.com/chicorapchan Há várias definições para arquivos em computação. Uma das mais usadas é a de que um arquivo é um conjunto de registros

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Arquivos Copyright 2014 IFRN Agenda Conceito Tipos de arquivos Texto Binário Stream Principais funções Exemplos

Leia mais

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 15 - Arquivos 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Fundamentos de Programação 1

Fundamentos de Programação 1 Fundamentos de Programação 1 Linguagem C Arquivos Seqüências ou de Texto. Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO 1 Arquivo de Escrita 1 fopen ( nome.txt", "w" ); fputc ( caracter, arquivo); 2 #include

Leia mais

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II Introdução à Computação II 5952011 9. Arquivos em C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 9. Arquivos em C 9.1. Introdução 9.2. Escrita 9.3. Leitura

Leia mais

Métodos Computacionais. Arquivos

Métodos Computacionais. Arquivos Métodos Computacionais Arquivos Arquivos Um arquivo representa um elemento de informação armazenado em memória secundária (disco) Características: Informações são persistidas Atribui-se nomes aos elementos

Leia mais

Manipulação de Arquivos

Manipulação de Arquivos Manipulação de Arquivos Devemos iniciar nossa explanação pelo conceito de arquivo: Arquivo é uma unidade lógica utilizada para armazenar dados em disco ou em qualquer outro dispositivo externo de armazenamento.

Leia mais

SSC304 Introdução à Programação Para Engenharias. Arquivos. GE4 Bio

SSC304 Introdução à Programação Para Engenharias. Arquivos. GE4 Bio Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Introdução à Para Engenharias Arquivos GE4 Bio GE4Bio Grupo de Estudos em Sinais Biológicos

Leia mais

Laboratório de Introdução à Ciência da Computação I

Laboratório de Introdução à Ciência da Computação I Laboratório de Introdução à Ciência da Computação I Aula 13 Arquivos Professores: Jó Ueyama 10/06/10 1 Stream de texto Arquivo: tipo texto Um arquivo texto é uma sequência de linhas, onde cada linha contém

Leia mais

Introdução a Programação. Manipulando Arquivos em Modo Texto

Introdução a Programação. Manipulando Arquivos em Modo Texto Introdução a Programação Manipulando Arquivos em Modo Texto Tópicos da Aula Hoje aprenderemos funções de manipulação de arquivos texto Funções de leitura em modo texto Funções de escrita em modo texto

Leia mais

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria USP - ICMC - SSC SSC 0501-1o. Semestre 2015 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] icmc. usp. br, gmail. com Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO Introdução As informações que os programas utilizam são perdidas quando eles são finalizados ou quando o computador é desligado.

Leia mais

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria USP - ICMC - SSC SSC 0501-1o. Semestre 2011 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] icmc. usp. br, gmail. com Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

C Arquivos. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

C Arquivos. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ C Arquivos Adriano Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Fluxos de Dados Arquivos Funções de Entrada e Saída Abrindo um

Leia mais

Aula 26 - Arquivos. Prof. Laura Silva de Assis. Engenharia da Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca

Aula 26 - Arquivos. Prof. Laura Silva de Assis. Engenharia da Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca Programação I Aula 26 - Prof. Laura Silva de Assis Engenharia da Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis 2 o semestre - 2015 1 Sumário

Leia mais

Programação Computacional Aula 17: Manipulação de arquivos

Programação Computacional Aula 17: Manipulação de arquivos Programação Computacional Aula 17: Manipulação de arquivos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br Arquivos de registros Os dados manipulados pelos nossos programas (dados de entrada, dados

Leia mais

Sequência de informações binárias armazenadas num dispositivo de armazenamento permanente. Em geral os bits são agrupados em grupos de 8 (1 byte)

Sequência de informações binárias armazenadas num dispositivo de armazenamento permanente. Em geral os bits são agrupados em grupos de 8 (1 byte) Arquivos Apesar da organização física sequencial dos bytes no arquivo, podemos em cima desta organização básica implementar outros tipos de estruturação para uma arquivo Arquivo Sequência de informações

Leia mais

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental USP - ICMC - SSC SSC 0301-2o. Semestre 2013 Disciplina de Introdução à Computação para Engenharia Ambiental 1 Prof. Dr. Fernando Santos Osório / Prof. Artur Lovato Cunha LRM - Laboratório de Robótica Móvel

Leia mais

Alocação Dinâmica de Memória - Exercício Escreva um programa em C que manipule um vetor de inteiros não nulos alocado dinamicamente.

Alocação Dinâmica de Memória - Exercício Escreva um programa em C que manipule um vetor de inteiros não nulos alocado dinamicamente. 1 Alocação Dinâmica de Memória - Exercício Escreva um programa em C que manipule um vetor de inteiros não nulos alocado dinamicamente. O programa recebe inteiros, através da entrada padrão, e os insere

Leia mais

Depuração e Teste de programas C C Depuração e teste de programas C

Depuração e Teste de programas C C Depuração e teste de programas C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Depuração e Teste de programas C C Depuração e teste de programas C Profa Rosana Braga (adaptado de material do prof.

Leia mais

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ] USP - ICMC - SSC SSC 0300-2o. Semestre 2013 Disciplina de [ Eng. Elétrica / Automação ] Prof. Dr. Fernando Santos Osório / PAE: Rafael Klaser (LRM / ICMC) LRM - Laboratório de Robótica Móvel do ICMC /

Leia mais

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ] USP - ICMC - SSC SSC 0300-2o. Semestre 2013 Disciplina de [ Eng. Elétrica / Automação ] Prof. Dr. Fernando Santos Osório / PAE: Rafael Klaser (LRM / ICMC) LRM - Laboratório de Robótica Móvel do ICMC /

Leia mais

1 Escrita de Arquivos Binário

1 Escrita de Arquivos Binário Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula prática sobre arquivos binários 1 Escrita de Arquivos Binário Esta aula será sobre escrita e leitura de arquivos binários. Nesta

Leia mais

Outline. 33. Manipulação de arquivos DIM

Outline. 33. Manipulação de arquivos DIM Outline 33. Manipulação de arquivos DIM031 015.1 Leitura e escrita 3 s DIM031 33. Manipulação de arquivos 015.1 1 / 4 DIM031 33. Manipulação de arquivos 015.1 / 4 Arquivo = entidade de armazenamento de

Leia mais

Linguagem C: Arquivo-Texto

Linguagem C: Arquivo-Texto Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Introdução em C 2 3 Organização Introdução em C 1 Introdução em C 2 3 Introdução

Leia mais

Arquivos. Estruturas de Dados II Vanessa Braganholo

Arquivos. Estruturas de Dados II Vanessa Braganholo Arquivos Estruturas de Dados II Vanessa Braganholo Entidades } Aplicações precisam armazenar dados sobre as mais diversas entidades, que podem ser concretas ou abstratas } Funcionário de uma empresa (concreto)

Leia mais

3.1 - Funções para manipular dados de entrada e saída padrão

3.1 - Funções para manipular dados de entrada e saída padrão 1616161616161616161616161616161616161616161616161616 3- ENTRADA E SAÍDA EM C Os principais meios para executar operações de entrada e saída (E/S) são: Entrada e saída pelo console (ou padrão): teclado

Leia mais

1/22 FICHEIROS BINÁRIOS

1/22 FICHEIROS BINÁRIOS 1/22 FICHEIROS BINÁRIOS Funções para manipulação de ficheiros 2/22 Funções para manipulação de ficheiros fopen abertura de um ficheiro para leitura/entrada e escrita/saída fclose fecho de um ficheiro fwrite

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II Slides cedidos por Karina Mochetti 2018.1 Arquivos Arquivos 'a' ' ' '4' '2' ' ' 'C' 'A' K' 'E' 'a' 42 "CAKE" 0x6120 0x3432 0x2043 0x414B 0x45 Arquivos de Texto vs Arquivos

Leia mais

Introdução a Programação. Arquivos

Introdução a Programação. Arquivos Introdução a Programação Arquivos Tópicos da Aula Hoje aprenderemos a persistir dados Conceito de arquivos Importância de persistência Modos de acesso de arquivos em C Operações em arquivos Funções de

Leia mais

Aula de Arquivos. Jesimar da Silva Arantes. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP

Aula de Arquivos. Jesimar da Silva Arantes. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP Aula de Arquivos Jesimar da Silva Arantes Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP Estagiário PAE: Jesimar da Silva Arantes Professor: Claudio Fabiano

Leia mais

Alocação Dinâmica de Memória - Exercício

Alocação Dinâmica de Memória - Exercício Alocação Dinâmica de Memória - Exercício Construa um programa que leia da entrada padrão o número de linhas e de colunas de uma matriz de floats, aloque espaço dinamicamente para esta e a inicialize, com

Leia mais

Leitura de Arquivos. Prof. Fabrício Olivetti de França

Leitura de Arquivos. Prof. Fabrício Olivetti de França Leitura de Arquivos Prof. Fabrício Olivetti de França Leitura de Arquivos Na linguagem C temos um tipo especial chamado FILE para trabalhar com arquivos. Abrindo e fechando um arquivo Para abrir um arquivo

Leia mais

Programação II. Files Read & Write. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Files Read & Write. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Files Read & Write Bruno Feijó Dept. de Informática, PUC-Rio Funções de entrada e saída em arquivos Motivação: quando um programa precisa processar um volume de dados muito grande Imagine

Leia mais

Capítulo 6: Arquivos

Capítulo 6: Arquivos Capítulo 6: Arquivos Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Funções de entrada e saída em arquivos Nos capítulos anteriores, desenvolvemos programas que capturam seus dados de

Leia mais

Linguagem de Programação

Linguagem de Programação Linguagem de Programação Funções para Manipulação de Arquivos Gil Eduardo de Andrade Introdução Na última aula foram apresentados e definidos: o conceito de arquivo e seus modos de abertura, o ponteiro

Leia mais

Rogério Rodrigues de Vargas

Rogério Rodrigues de Vargas OPERAÇÕE COM ARQUIVO EM C/C++ Rogério Rodrigues de Vargas Roteiro o da Aula ua U M ÁRIO Objetivos Conhecer os aspectos básicos de operações com arquivos I N T RODUÇÃO Dominar o processo de descrição e

Leia mais

Linguagem de Programação

Linguagem de Programação Linguagem de Programação Manipulando Arquivo de Texto Gil Eduardo de Andrade Arquivos Introdução Em linguagem C um arquivo pode ser utilizado para representar vários recursos, desde um arquivo de texto

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Operações de abertura, leitura e finalização de arquivos. Aula 32 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia de Computação

Leia mais

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton nilton@comp.uems.br Introdução A linguagem C foi inventada por Dennis Ritchie e

Leia mais

Linguagem C arquivos. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Linguagem C arquivos. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná Linguagem C arquivos IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C... Vetores Matrizes Funções Recursão Registros Ponteiros

Leia mais

Programação de Computadores I. Linguagem C Arquivos

Programação de Computadores I. Linguagem C Arquivos Linguagem C Arquivos Prof. Edwar Saliba Júnior Novembro de 2011 Unidade 12 Arquivos 1 Trabalhando com Arquivos Um arquivo em Linguagem C pode representar diversas coisas, como: arquivos em disco, uma impressora,

Leia mais

Manipulação de Arquivos

Manipulação de Arquivos 394 Podemos escrever e ler blocos de dados em um determinado arquivo. Para tanto, a linguagem C, disponibiliza as funções fread() e fwrite(). - fread Manipulação de Arquivos O protótipo de fread() é: unsigned

Leia mais

Aula 26: Arquivos de texto

Aula 26: Arquivos de texto Aula 26: Arquivos de texto Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aulas anteriores Estruturas heterogêneas Alocação

Leia mais

Faculdade de Computação

Faculdade de Computação Faculdade de Computação Programação Procedimental 13 Laboratório de Programação - Algoritmos Prof. Cláudio C. Rodrigues Prof. Fabíola Gonçalves I. Introdução a Arquivos A motivação para utilizar arquivos

Leia mais

Manipulação de Arquivos Binários

Manipulação de Arquivos Binários Introdução à Computação I Departamento de Física e Matemática FFCLRP-USP Prof. Dr. José Augusto Baranauskas IBm1006 1º Semestre/2006 Notas de Aula Manipulação de Arquivos Binários Até agora vimos como

Leia mais

Manipulação de Arquivos. Técnicas de Programação

Manipulação de Arquivos. Técnicas de Programação Manipulação de Arquivos Técnicas de Programação Agenda do Dia Noções de Manipulação de Arquivos Ponteiros para Arquivos Abrindo Arquivos Fechando Arquivos Exercícios Lendo e Escrevendo em Arquivos Noções

Leia mais

Arrays, Criação de Funções, Estruturas e Manipulação de Arquivos.

Arrays, Criação de Funções, Estruturas e Manipulação de Arquivos. Faculdade de Engenharia da Computação Disciplina: Lógica de Programação Arrays, Criação de Funções, Estruturas e Manipulação de Arquivos. Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis

Leia mais

1/24 FICHEIROS DE TEXTO

1/24 FICHEIROS DE TEXTO 1/24 FICHEIROS DE TEXTO Hardware de entrada/saída 2/24 Hardware de entrada/saída Grande variedade de dispositivos de E/S (Input/Output) - de memória: disco interno e externo, DVD, pen, CD,... - de transmissão:

Leia mais

Linguagem C Ficheiros Compilação Separada

Linguagem C Ficheiros Compilação Separada Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada Definição de novos tipos em C É possível definir

Leia mais

Operações com Arquivos

Operações com Arquivos Operações com Arquivos Programação de Computadores I Emiliana Mara Lopes Simões simoes.eml@gmail.com Universidade Federal de Ouro Preto dezembro 2009 Arquivos Os arquivos são utilizados para armazenamento

Leia mais

1 Arquivos em C. CEFETES Serra - Programação II Mateus Costa Notas de Aula - Arquivos

1 Arquivos em C. CEFETES Serra - Programação II Mateus Costa Notas de Aula - Arquivos CEFETES Serra - Programação II Mateus Costa Notas de Aula - Arquivos 1 Arquivos em C O objetivo deste capítulo e permitir a construção de programas que armazenem dados de forma permanente em dispositivos

Leia mais

ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ARQUIVOS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ARQUIVO Arquivo é um conjunto de dados, dispostos de forma sequencial Arquivo Programa INSTITUTO DE COMPUTAÇÃO - UFF 2 STREAM Leitura e

Leia mais

Manipulação de arquivos

Manipulação de arquivos 246 Arquivo En4dade básica do sistema operacional (SO). Estrutura que armazena informação de forma não volá4l em disposi4vos de memória permanente. Após sua criação, podem ser acessados e modificados por

Leia mais

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU Aula 9 Oficina de Programação Strings Profa. Elaine Faria UFU - 2017 String Cadeia de caracteres (ou String) É uma seqüência de letras e símbolos, na qual os símbolos podem ser espaços em branco, dígitos

Leia mais

Arquivos Binários UFOP 1/25

Arquivos Binários UFOP 1/25 BCC 201 - Introdução à Programação I Arquivos Binários Guillermo Cámara-Chávez UFOP 1/25 Arquivos Binários: typedef, structs em Arquivos I t y p e d e f s t r u c t Dados { i n t dia, mes, ano ; d o u

Leia mais

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br Computação Eletrônica Strings Prof: Luciano Barbosa Recapitulando: Vetores Representar uma coleção de variáveis de um mesmo tipo em uma dimensão Ex: float notas[5]; ou float notas[5] = {2.5,3.2,1.9,4.1,2.0};

Leia mais

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa MC-102 Aula 24 Arquivos em C e Parâmetros do Programa Instituto de Computação Unicamp 3 de Novembro de 2016 Roteiro 1 Arquivos Introdução a Arquivos em C Nomes e Extensões Tipos de Arquivos Caminhos Absolutos

Leia mais

DICA: Preste bastante atenção nas funções de manipulação de arquivos e verás que você já utiliza arquivos desde a primeira aula.

DICA: Preste bastante atenção nas funções de manipulação de arquivos e verás que você já utiliza arquivos desde a primeira aula. Capítulo 5 Arquivos 5.1 Introdução Todos os programas codificados até o momento podem armazenar dados de maneira temporária. Isto é, utilizamos a memória principal (RAM) como unidade de armazenamento.

Leia mais

Capítulo 06: Arquivos

Capítulo 06: Arquivos Capítulo 06: Arquivos INF1004 e INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Funções de entrada e saída em arquivos Motivação: quando um programa precisa processar

Leia mais

LÓGICA DE PROGRAMAÇÃO. Resumo da Linguagem C. Sérgio Carlos Portari Júnior

LÓGICA DE PROGRAMAÇÃO. Resumo da Linguagem C. Sérgio Carlos Portari Júnior LÓGICA DE PROGRAMAÇÃO Resumo da Linguagem C Sérgio Carlos Portari Júnior Tipos de dados mais usados em C Inteiro int 2 bytes Real float 4 bytes Caractere char 1 byte String não existe* xxxxxxx Booleano

Leia mais

LISTA DE EXERCÍCIOS MÊS 03

LISTA DE EXERCÍCIOS MÊS 03 São José dos Campos, 21 de Maio de 2008 Disciplina: CES 10 Introdução à Computação. Semestre 2008-2º Período Professor: Carlos Henrique Quartucci Forster Estagiária: Michelle de Oliveira Parreira Instituto

Leia mais

Apêndice B. Cadeias de Caracteres (Strings)

Apêndice B. Cadeias de Caracteres (Strings) Apêndice B. Cadeias de Caracteres (Strings) Até agora, quando desejávamos indicar o número de elementos existentes em um vetor qualquer, utilizávamos uma variável inteira, digamos tam, para armazenar tal

Leia mais

Programação Estruturada II

Programação Estruturada II Programação Estruturada II Arquivos I/O Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com Apresentação Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Ementa Depuração e Documentação

Leia mais

Programação. Folha Prática 10. Lab. 10. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Programação. Folha Prática 10. Lab. 10. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved. Programação Folha Prática 10 Lab. 10 Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved. 1. Revisão. 2. Objectivos. 3. Exercícios LAB. 10 10ª semana

Leia mais

Sumário. Ficheiros. Ficheiros

Sumário. Ficheiros. Ficheiros Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções

Leia mais

Referências. Arquivos. Tópicos Principais. Programação de Computadores II. Motivação. Motivação. Abertura de arquivo. Slides da profa.

Referências. Arquivos. Tópicos Principais. Programação de Computadores II. Motivação. Motivação. Abertura de arquivo. Slides da profa. Programação de Computadores II Arquivos Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Capítulo 15 Arquivos Slides da profa. Paula

Leia mais