Baixe o app para aproveitar ainda mais
Prévia do material em texto
Manipulação de Arquivos | Programação de Computadores 1 de 172014 © MdaS ManipulaManipulaManipulaManipulaçççção de Arquivosão de Arquivosão de Arquivosão de Arquivos � Verdades sobre o 4º Bimestre: � Você precisa completar 20 pontos � Você está de saco cheio cansado � Você ainda se embaralha nos printf’s e scanf’s � Pois bem, você pode não ficar entrando com os valores manualmente � O próprio C poderá fazer isto por você! Manipulação de Arquivos | Programação de Computadores 2 de 172014 © MdaS ManipulaManipulaManipulaManipulaçççção de Arquivosão de Arquivosão de Arquivosão de Arquivos � Na execução de um programa em C as informações: � São perdidas quando o programa é fechado � Podem conter uma grande quantidade de leitura de dados � A manipulação de arquivos em C é uma alternativa eficaz em casos onde seja necessária: � A leitura de um conjunto de dados de um arquivo � A escrita de dados em um arquivo � Para que ele seja armazenado em um local no disco Manipulação de Arquivos | Programação de Computadores 3 de 172014 © MdaS ArquivosArquivosArquivosArquivos � Dentre diversos tipos de arquivos existentes no computador, a linguagem C trata dois tipos distintos de arquivos: � Texto (.txt) � Formado por caracteres da tabela ASCII � Agrupamento em linhas � Podem ser exibidos e modificados por editores de texto � Binários (.bin) � Formado por sequências de bits � Ocupam menos espaço � Informação criptografada Manipulação de Arquivos | Programação de Computadores 4 de 172014 © MdaS ManipulaManipulaManipulaManipulaçççção de Arquivosão de Arquivosão de Arquivosão de Arquivos � Arquivos são tratados de um modo parecido com a alocação dinâmica � Ou seja, o arquivo é, respectivamente: � Declarado � Aberto � Executado (Leitura/Escrita) � Fechado Manipulação de Arquivos | Programação de Computadores 5 de 172014 © MdaS DeclaraDeclaraDeclaraDeclaraçççção de Arquivosão de Arquivosão de Arquivosão de Arquivos � Um arquivo é declarado como uma variável � O tipo da variável arquivo é do tipo FILE � Como é uma representação do arquivo, este tipo é um ponteiro #include <stdio.h> FILE *arq; //declaração do tipo arquivo texto Manipulação de Arquivos | Programação de Computadores 6 de 172014 © MdaS Abertura de Arquivo TextoAbertura de Arquivo TextoAbertura de Arquivo TextoAbertura de Arquivo Texto � É feita através da função fopen() � O nome do arquivo tem que estar na pasta onde o programa for salvo � Necessita de um modo de acesso: arq = fopen("nome.txt", "modo"); Variável recebe a função Modo de acesso Nome do arquivo Cria ou adiciona um texto para escrita ou leituraa+ Cria ou adiciona um texto para escritaa Cria ou sobrescreve um texto para escrita ou leituraw+ Cria ou sobrescreve um texto para escritaw Abre um texto já existente para leitura e escritar+ Abre um texto já existente para leiturar Manipulação de Arquivos | Programação de Computadores 7 de 172014 © MdaS Leitura de um Arquivo TextoLeitura de um Arquivo TextoLeitura de um Arquivo TextoLeitura de um Arquivo Texto � Basicamente, é feita pela função fscanf() � É muito parecida com a sintaxe da função scanf() � Apesar de ser um conjunto de caracteres, a leitura a partir do texto lê o conteúdo até encontrar um espaço fscanf( arq, "%expressao", &var); Variável do arquivo Variável de leitura Expressão de controle fscanf( arq, "%d", &x); fscanf( arq, "%f", &y); 12 312.8 31 14 5 O 1º fscanf() irá ler, no arquivo texto, apenas o ’12’ e armazenará na variável x O 2º fscanf() irá ler apenas o ’312.8’ e armazenará na variável y Manipulação de Arquivos | Programação de Computadores 8 de 172014 © MdaS ExemploExemploExemploExemplo � Ler uma matriz quadrada de ordem 3 a partir do arquivo matriz.txt e exibir em tela a matriz � O arquivo matriz.txt: 3 5 4 8 11 2 0 -1 7 Manipulação de Arquivos | Programação de Computadores 9 de 172014 © MdaS Escrita de um Arquivo TextoEscrita de um Arquivo TextoEscrita de um Arquivo TextoEscrita de um Arquivo Texto � É realizada pela função fprintf() � É muito parecida com a sintaxe da função printf() � A escrita de caracteres é feita de modo semelhante ao que é feito na exibição em tela fprintf( arq, "Texto ou %expressao", var); Variável do arquivo Variáveis que serão impressas Texto a ser impresso fprintf(arq2, "Dois numeros: %d e %f", x, y); Dois numeros: 12 e 312.8 O fprintf() irá escrever no arquivo texto, o conteúdo expresso entre aspas Manipulação de Arquivos | Programação de Computadores 10 de 172014 © MdaS ObservaObservaObservaObservaççççãoãoãoão � O comando fscanf() só funciona se o arquivo correspondente existir e estiver aberto � O comando fprintf() permite formatações na saída (assim como o printf()) e funciona apenas se o arquivo estiver aberto Manipulação de Arquivos | Programação de Computadores 11 de 172014 © MdaS Fechamento de um ArquivoFechamento de um ArquivoFechamento de um ArquivoFechamento de um Arquivo � Todo arquivo texto deverá ser fechado � Utiliza-se a função fclose() � É fundamental fechar o arquivo para � Salvar as alterações � Liberar a memória ocupada fclose(arq); Variável recebe a função Manipulação de Arquivos | Programação de Computadores 12 de 172014 © MdaS ExemploExemploExemploExemplo � Escrever em um arquivo texto uma matriz quadrada de dimensão n, onde aij = i + j + 1 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 Manipulação de Arquivos | Programação de Computadores 13 de 172014 © MdaS Pesquisa em ArquivosPesquisa em ArquivosPesquisa em ArquivosPesquisa em Arquivos � Quando se abre um arquivo, o cursor está posicionado em seu início � A movimentação do cursor poderá ser feita pela função fseek(arq, desloc, origem) � arq: arquivo-texto aberto � desloc: quantidade de bytes a ser avançada ou recuada � origem: onde pode ser posicionado o cursor � SEEK_SET: início do arquivo � SEEK_CUR: posição atual � SEEK_END: fim do arquivo Manipulação de Arquivos | Programação de Computadores 14 de 172014 © MdaS Outras FunOutras FunOutras FunOutras Funçççções para Arquivosões para Arquivosões para Arquivosões para Arquivos � feof(arq): retorna se chegou o fim do arquivo (1) ou não (0) � fgets(string, num_char, arq): lê uma string a partir de um arquivo texto � string: a variável que receberá a string � num_char: quantidade de caracteres a serem lidos � arq: variável do arquivo texto � fputs(string, arq): escreve no arquivo texto arq o conteúdo do texto expresso em string, além de pular uma linha (\n) Manipulação de Arquivos | Programação de Computadores 15 de 172014 © MdaS Outras FunOutras FunOutras FunOutras Funçççções para Arquivosões para Arquivosões para Arquivosões para Arquivos � rewind(arq): retorna ao começo do arquivo � ferror(arq): verifica se há erro no arquivo-texto � fflush(arq): descarrega da memória o arquivo � fread(arq): leitura em arquivo binário � fwrite(&var, numbytes, cont, arq): escrita em arquivo binário Manipulação de Arquivos | Programação de Computadores 16 de 172014 © MdaS ExemploExemploExemploExemplo � (Pereira, 2010) Dado um conjunto de valores, trocar todos os elementos negativos por 0 FILE *in; float valor; in = fopen("dados.txt", "r+"); // abrir para edição while (!feof(in)) { fscanf(in, "%f", &valor); if ( valor < 0.0 ) { fseek(in, -sizeof(valor), SEEK_CUR); // voltar “1 posição” fprintf(in, "%f", 0); } } fclose(in); Manipulação de Arquivos | Programação de Computadores 17 de 172014 © MdaS ExercExercExercExercííííciociociocio � Grupos devem ser definidos da seguinte maneira: 1. Gean / Julio / Gilberto 2. Alan / Andressa 3. Carolina / Rinaldo / Jessica 4. Masaichi / Jonatha 5. Fabio / Viviane 6. Layciele / Emanuely 7. Ananda / Lais 8. Natalia / Daiane 9. Daniel / Rayane 10. Juliana / Amanda 11. Guilherme / Maria Manipulação de Arquivos | Programação de Computadores 18 de 172014 © MdaS ExercExercExercExercíííício cio cio cio –––– Duplas Duplas Duplas Duplas íííímparesmparesmparesmpares � O arquivo texto matrizes.txtarmazena os dados de duas matrizes quadradas com elementos reais. A primeira linha contém um valor inteiro correspondente a dimensão da primeira matriz, seguida pelos elementos da primeira matriz, por linhas. A seguir, outro valor inteiro representa a dimensão da segunda matriz, seguido pelos seus elementos. � Escreva um programa que leia as informações do arquivo e armazene as duas matrizes reais, alocadas dinamicamente. Verifique se é possível realizar a soma das duas matrizes. Em caso positivo, armazene o resultado em arquivo texto Manipulação de Arquivos | Programação de Computadores 19 de 172014 © MdaS ExercExercExercExercíííício cio cio cio –––– Duplas paresDuplas paresDuplas paresDuplas pares � Imprima em um arquivo-texto a tabela de valores da função f(x) no intervalo [-20, 20] de 0,5 a 0,5, sendo que: � Os valores devem estar formatados com 2 casas decimais alinhadas em formato de tabela >+− ≤< ≤<− −≤− == π ππ π 3124² 3)cos()sin( 42 4, 2 )( xxx xxx x x x yxf x
Compartilhar