Buscar

Aula 1 - Arquivos Parte I

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Laboratório de 
Programação
Operações com arquivos - Parte I
Arquivos Texto em C
Prof. Daniel Vecchiato
daniel@ic.ufmt.br
quarta-feira, 13 de março de 2013
Conteúdo Abordado
• Tipo de dados;
• Algoritmos em C e Pascal;
• Estruturas de controle;
• Estruturas de repetição;
• Variáveis compostas homogêneas;
• Variáveis compostas heterogêneas;
• Modularização: Blocos e Subprogramas;
• Parâmetros e formas de passagem;
• Recursividade.
quarta-feira, 13 de março de 2013
Conteúdo a ser 
abordado
• Operações com arquivos;
• Variáveis dinâmicas;
• Abstração de dados;
• Estruturas de dados dinâmicas: listas 
lineares;
• Métodos simples de ordenação e pesquisa 
de dados.
quarta-feira, 13 de março de 2013
Avaliação
• Média = ((Nota 1 + Nota 2)/2 + Trab.)/2
quarta-feira, 13 de março de 2013
Agenda
• Tipos de memória;
• Nomes e extensões;
• Tipos de arquivos;
• Abrindo arquivo em C;
• Lendo arquivo em C;
• Escrevendo arquivo em C;
• Resumo.
quarta-feira, 13 de março de 2013
Tipos de Memória
• Quando se estuda organização básica de 
um sistema computacional vemos que ela é 
formada por:
quarta-feira, 13 de março de 2013
Tipos de Memória
• A memória principal (Random Access 
Memory) utilizada na maioria dos 
computadores, usa uma tecnologia que 
requer alimentação constante de energia 
para que informações sejam preservadas.
quarta-feira, 13 de março de 2013
Tipos de Memória
• A memória secundária (como HD) utilizada 
na maioria dos computadores, usa uma 
tecnologia que NÃO requer alimentação 
constante de energia para que informações 
sejam preservadas.
quarta-feira, 13 de março de 2013
Tipos de Memória
• Todos os programas executam na RAM, e 
por isso, quando o programa termina ou 
acaba energia, as informações são perdidas.
• Para podermos gravar estas informações de 
forma persistente, devemos escrevê-las em 
arquivos na memória secundária.
quarta-feira, 13 de março de 2013
Tipos de Memória
• A memória secundária possui algumas 
características:
• É mais lenta do que a RAM;
• É mais barata do que a RAM;
• Possui maior capacidade de armazenamento.
• Sempre que nos referimos a um arquivo, 
estamos falando de informações armazenadas 
na memória secundária.
quarta-feira, 13 de março de 2013
Nomes e Extensões
• Arquivos são identificados por um nome.
• O nome de um arquivo pode conter sua 
extensão que indica o conteúdo do 
arquivo.
arq.txt arquivo de texto
arq.c código fonte em C
arq.pdf portable document format
arq.html arquivo de páginas WWW
arq.exe arquivo executável (Windows)
quarta-feira, 13 de março de 2013
Tipos de Arquivos
• Arquivos podem ter o mais variado 
conteúdo, mas do ponto de vista dos 
programas existem dois tipos de arquivos:
• Arquivo Texto;
• Arquivo Binário. 
quarta-feira, 13 de março de 2013
Tipos de Arquivos
• Arquivos Texto:
• Armazena caracteres que podem ser 
mostrados diretamente na tela ou 
modificados por um editor de texto 
simples.
• Exemplos: Código Fonte, páginas HTML.
quarta-feira, 13 de março de 2013
Tipos de Arquivos
• Arquivo Binário:
• Sequência de bits sujeita a convenções 
dos programas que a gerou, não legíveis 
diretamente.
• Exemplo: Arquivos executáveis, 
compactados, documentos do Word.
quarta-feira, 13 de março de 2013
Diretório
• Também conhecido como “pasta”.
• Contém arquivos e/ou outros diretórios.
quarta-feira, 13 de março de 2013
Caminhos absolutos/
relativos
• O nome de um arquivo pode conter o seu 
diretório, ou seja, o caminho para 
encontrar este arquivo a partir da raiz.
quarta-feira, 13 de março de 2013
Importância dos 
arquivos
• Persistir os dados;
• Salvar estado do programa;
• Podem armazenar grande quantidade de 
informação;
• Troca de informação entre programas;
• Otimizar o uso da memória.
quarta-feira, 13 de março de 2013
Fonte: Vida de Programador, 2011. http://vidadeprogramador.com.br/2011/09/08/so-um-arquivo-texto/
quarta-feira, 13 de março de 2013
Arquivo texto em C
• Em C, para se trabalhar com arquivos 
devemos criar um ponteiro especial: um 
ponteiro para arquivos.
• O comando acima cria um ponteiro para 
arquivos cujo o nome da variável é o nome 
especificado.
FILE *nome_variavel;
quarta-feira, 13 de março de 2013
Arquivo texto em C
• Após ser criado um ponteiro para o 
arquivo, podemos associá-lo com um 
arquivo real do computador usando a 
função fopen.
FILE *arq1;
arq1 = fopen(“teste.txt”, “r”);
quarta-feira, 13 de março de 2013
Arquivo texto em C
• O primeiro parâmetro para fopen é uma string com o nome do 
arquivo:
• Pode ser absoluto, por exemplo:
• “/user/daniel/teste.txt”
• Pode ser relativo, por exemplo:
• “teste.txt” 
• O segundo parâmetro é uma string informando como o arquivo 
será aberto:
• Para leitura ou gravação de dados ou ambos;
• Se é texto ou binário.
quarta-feira, 13 de março de 2013
Arquivo texto em C
• Antes de acessar um arquivo, devemos abrí-
lo com com a função fopen().
• A função retorna um ponteiro para o 
arquivo em caso de sucesso, e em caso de 
erro a função retorna NULL.
quarta-feira, 13 de março de 2013
• Para ler dados do arquivo aberto, usamos a 
função fscanf().
• A única diferença para o scanf, é que devemos passar por parâmetro um ponteiro 
para o arquivo de onde será feita a leitura.
Lendo dados de um 
arquivo texto
int fscanf(ponteiro para arquivo, string de formato, variáveis);
quarta-feira, 13 de março de 2013
Lendo dados de um 
arquivo texto
• Quando um arquivo é aberto, um indicador de posição 
no arquivo é criado, e este recebe a posição do início do 
arquivo.
• Para cada dado lido do arquivo, este indicador de posição é 
automaticamente incrementado para o próximo dado não 
lido.
• Eventualmente o indicador de posição chega ao fim do 
arquivo:
• A função fscanf devolve um valor especial, EOF, caso 
tente-se ler dados e o indicador de posição está no fim 
do arquivo.
quarta-feira, 13 de março de 2013
Lendo dados de um 
arquivo texto
• Para ler todos os dados de um arquivo texto, basta usarmos um 
laço que será executado enquanto não chegarmos no fim do 
arquivo:
• O comando fclose deve ser sempre usado para fechar um 
arquivo que foi aberto.
• Quando escrevemos dados em um arquivo, este comando 
garante que os dados serão efetivamente escritos no arquivo.
quarta-feira, 13 de março de 2013
Exercício
• Faça um programa que:
• Peça ao usuário o nome de um arquivo.
• Imprima na tela as informações contidas 
no arquivo.
quarta-feira, 13 de março de 2013
quarta-feira, 13 de março de 2013
Pergunta!
• Se ao realizar a leitura de um caracter o 
indicador de posição se move 
automaticamente, ao chegar no EOF como 
podemos ler o arquivo novamente do 
início?
quarta-feira, 13 de março de 2013
Resposta!
• Podemos abri-lo e fechá-lo novamente.
• Usar o comando rewind();
quarta-feira, 13 de março de 2013
Escrevendo dados em 
um arquivo texto
• Para escrever em um arquivo, ele deve ser 
aberto de forma apropriada, usando a 
opção w.
• Usamos a função fprintf().
int fprintf(ponteiro para arquivo, texto, variáveis);
quarta-feira, 13 de março de 2013
Escrevendo dados em 
um arquivo texto
quarta-feira, 13 de março de 2013
Exercício
• Faça um programa que:
• Receba do usuário o nome de dois 
arquivos, um de entrada e outro de saida;
• Realize a cópia do arquivo de entrada 
para o arquivo de saida.
quarta-feira, 13 de março de 2013
\
• \
quarta-feira, 13 de março de 2013
Função fopen
• FILE* fopen(const char *caminho, char *modo);
quarta-feira, 13 de março de 2013
Função fopen
• Se umarquivo for aberto para leitura (r) e 
ele não existir, fopen retorna NULL.
• Se um arquivo for aberto para escrita ou 
escrita/leitura (w/w+) e existir ele é 
sobrescrito.
• Se o arquivo não existir, ele é criado.
• Se um arquivo for aberto para leitura/escrita 
(r+) e existir, ele não será apagado.
quarta-feira, 13 de março de 2013
Lendo um texto na 
memória
• Podemos ler todo o texto de um arquivo 
para um vetor e fazer as alterações que 
precisamos.
• O texto alterado pode então ser 
sobrescrito sobre o texto anterior
• Como exemplo vamos fazer um programa 
que troca toda a ocorrencia de ‘a’ por ‘A’
quarta-feira, 13 de março de 2013
quarta-feira, 13 de março de 2013
quarta-feira, 13 de março de 2013
Resumo para se 
trabalhar com arquivo
• Crie um ponteiro para o arquivo: FILE *parq;
• Abra o arquivo de modo apropriado associando-o a um ponteiro:
• parq = fopen(“nomeArquivo”, “modo”);
• Leia dados do arquivo na memória usando fscanf
• fscanf(parq, string-tipo-variavel, &variavel);
• Dados podem ser lidos até EOF.
• Altere dados se necessário e escreva-o novamente em arquivo
• fprintf(parq, string-tipo-variavel, variavel);
• Todo arquivo deve ser fechado 
• fclose(parq);
quarta-feira, 13 de março de 2013
Outras informações
• fscanf pode ler variáveis de outros tipos 
que não texto ou char
• fscanf(parq, “%d”, &i);
• O mesmo é válido para fprintf
• fprintf(parq, “%d”, i);
• Pode-se remover um arquivo usando a 
função remove(nomeArquivo)
quarta-feira, 13 de março de 2013
Exercícios
• (1) Faça um programa que conte o número 
de caracteres de um arquivo texto e 
imprima o resultado na tela.
• (2) Escreva um programa que compare dois 
arquivos especificados pelo usuário e 
imprima sempre que os caracteres dos dois 
coincidirem.
quarta-feira, 13 de março de 2013
Exercícios
• (3) Faça um programa que solicite o nome de um 
arquivo e conte quantas palavras existem nesse 
arquivo, informando o usuário (outra parte do 
comando wc). Considere que uma palavra é 
separada de outra por pelo menos um espaço em 
branco ou um final de linha.
quarta-feira, 13 de março de 2013
Arquivos Binários
• Vimos que existem dois tipos de arquivos: 
texto e binário;
• Variáveis int ou float têm tamanho fixo na 
memória, por exemplo um int ocupa 4 bytes.
• Representação em texto precisa de um 
número variável de dígitos (10, 5.634, 100.300)
• Lembre que cada caracteré um char e usa 1 
byte de memória.
quarta-feira, 13 de março de 2013
Arquivos Binários
• Armazenar dados em arquivos de forma 
análoga a utilizada em memória permite:
• Reduzir o tamanho do arquivo;
• Guardar estruturas complicadas tendo 
acesso simples.
quarta-feira, 13 de março de 2013
Arquivos Binários
• Assim como em arquivos texto, devemos 
criar um ponteiro para arquivos.
• Podemos então associa-lo com um arquivo 
através do comando fopen.
FILE *arq;
arq = fopen(“arquivo.bin”, “rb”);
quarta-feira, 13 de março de 2013
Arquivos Binários
• As funções fread e fwrite permitem, 
respectivamente, a leitura e escrita de 
blocos de dados;
• Devemos determinar o número de 
elementos a serem lidos ou gravados e o 
tamanho de cada um.
quarta-feira, 13 de março de 2013
Arquivos Binários
• Para escrever um arquivo binário usamos a 
função fwrite.
• pt-mem: Ponteiro para região de memória contendo 
os dados a serem gravados.
• size: Número de bytes de um item.
• num-items: Número de itens que devem ser gravados.
• pt-arq: Ponteiro para o arquivo
quarta-feira, 13 de março de 2013
Arquivos Binários
• Podemos gravar double em binário do 
seguinte modo:
quarta-feira, 13 de março de 2013
• Podemos gravar um vetor de double em 
binário da seguinte forma:
Arquivos Binários
quarta-feira, 13 de março de 2013
Arquivos Binários
• Para ler um arquivo binário usamos a função 
fread.
• pt-mem: Ponteiro para região de memória (já 
alocada) para onde os dados serão lidos.
• size: Número de bytes de um item a ser lido.
• num-items: Número de itens que deve ser lido.
• pt-arq: Ponteiro para o arquivo.
quarta-feira, 13 de março de 2013
• Usando o exemplo anterior podemos ler 
um double em formato binário
Arquivos Binários
quarta-feira, 13 de março de 2013

Outros materiais