Buscar

03 - Arquivos - Programação Avançada

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 19 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 19 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 19 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

Programação II
Arquivos
Prof. Raphael Vidal
raphaelvidal9.webnode.com
raphael.r.vidal@gmail.com
roteiro
• Conceito de arquivos
• Funções de arquivos
• Função de abertura de arquivo – fopen
• Modos de abertura
• Localização do arquivo
• Operações com os arquivos – Capturar e escrever 
informações
• Fechamento do arquivo
Arquivos
• Até agora trabalhamos com variáveis simples ou compostas para
armazenar os dados necessários ao desenvolvimento de um programa.
• Quando o programa era encerrado as informações eram perdidas, pois
estavam apenas na memória do computador.
• Para resolver esse problema e armazenar uma maior quantidade de
informações, utilizaremos o arquivo (Não-volátil).
• Arquivos em disco suportam acesso sequencial ou aleatório
• À medida que cada caractere é lido ou escrito no arquivo, o indicador de 
posição é incrementado, possibilitando a progressão.
Abertura e Fechamento
• A manipulação de arquivos em disco é feita através de um stream, que 
está associado ao arquivo em disco.
• O stream é uma sequência de bytes, utilizada no fluxo de dados entre a 
memória e o arquivo (vice-versa).
• Esse stream é obtido na abertura do arquivo, realizando uma 
associação do stream em memória ao arquivo físico em disco.
• No fechamento do arquivo é realizada a desassociação da stream com 
o arquivo, e seu conteúdo será escrito no destino (descarga ou flushing)
Funções Arquivos
• fopen() Abrir
• fclose() Fechar
• fputc() Escrever um caracter
• fgetc() Lê um caracter
• fseek() Posicionar em um byte específico
• fprintf() Escreve uma cadeia
• fscanf() Lê uma cadeia
• fgets() Lê uma frase
• feof() End Of File ? (Fim de Arquivo ?)
• ferror() Ocorreu um erro ?
• rewind() Reloca o indicador para o início
• remove() Apaga o arquivo
• fflush() Descarrega o arquivo
Tipo FILE
• Para abrir, alterar ou criar um arquivo em seu HD é necessário criar
uma espécie de vínculo entre seu programa e um determinado
endereço de memória, onde está localizado (ou vai se localizar) o
arquivo.
• Essa ligação é um pouco mais complexa e de 'baixo nível', mas isso
não será motivo de preocupação, pois na linguagem C existe um tipo
de dado, o FILE, que serve para trabalharmos especificamente com
arquivos, e já está inclusive na biblioteca padrão do C, assim,
podemos usar sem nos preocupar em incluir biblioteca ou criar algum
código.
Arquivos e Ponteiros
Essa ligação, entre nosso programa e seu disco de dados é feita através
de um ponteiro. Tal ponteiro é do tipo FILE, e o nome você escolhe. A
sintaxe é a de criação de um ponteiro:
FILE *ptr;
Assim, nova variável ptr, do tipo FILE, será a relação entre nosso programa
em C e o arquivo que iremos trabalhar. Porém, sabemos que o ponteiro
deve apontar para um tipo específico de dados, que no nosso caso é o
tipo FILE.
Mas ele precisa apontar para 'alguém', só ter a referência (endereço de
memória onde o ponteiro aponta) não serve de muita coisa. E é aí que
entra a função fopen(). A função fopen() serve para especificarmos
algumas características do arquivo. Especificamente, como pode ser visto
na declaração desta função, precisamos fornecer dois dados: Endereço do
arquivo no seu computador (representado por uma string) Modo de
abertura do arquivo (outra string contendo o método de abertura) :
ptr = fopen(“arquivo.txt”, “w”);
http://www.cprogressivo.net/p/aprenda-tudo-sobre-ponteiros-em-c.html
http://www.cprogressivo.net/p/strings-e-caracteres-em-c.html
Abrir arquivo
• Forma geral:
ponteiro = fopen(arquivo, modo);
• Exemplo:
FILE *ptr;
ptr = fopen(“arquivo.txt”, “w”);
• Modos
• r Abre para leitura (Read)
• w Cria arquivo para escrita (Sobrescreve se já existir)
• a Adiciona dados no final (append)
Abrir arquivo
• Ao abrir um arquivo, é retornado um ponteiro indicando o endereço de 
memória onde se inicia a stream.
• Quando não é possível a abertura do arquivo, o valor NULL é retornado.
• Exemplo:
FILE *ptr;
ptr = fopen(“arquivo.txt”, “w”);
if (ptr == NULL) {
printf("Não foi possível abrir!!!");
return 0;
}
Endereço do arquivo
Para associar nossa variável ponteiro para um arquivo que será lido ou
criado em seu computador, é necessário que você forneça a
localização desse arquivo, afinal o C não pode adivinhar isso.
Isso é feito através de uma string passada para a função fopen(), e
essa string deve conter o endereço completo do arquivo, e isso inclui o
nome do arquivo.
Vamos supor que vamos trabalhar com um arquivo chamado 
"arquivo.txt".
Se queremos usar este arquivo e ele está na MESMA PASTA (ou 
diretório) do seu executável, precisamos apenas fornecer o nome 
completo (com extensão) do arquivo:
"arquivo.txt"
Endereço do arquivo
E caso ele esteja em outra pasta, como no C: ?
Fornecemos o caminho inteiro, que é C:\arquivo.txt
Porém, aqui vai um detalhe que é um erro bem comum entre
iniciantes: para representar a barra "\" em uma string, usamos DUAS
BARRAS: \\
Assim, nossa string seria: "C:\\arquivo.txt"
Se o arquivo estiver numa pasta (vamos chamar de "meus_arquivos",
dentro da pasta que está o executável, fazemos:
"meus_arquivos\\arquivo.txt"
Ou podemos pedir o endereço para o usuário, que poderá escrever
usando apenas uma barra "\", pois a representação dela em string é
"\\" e o C faz essa interpretação automaticamente.
Fechar arquivo
• Para fechar um arquivo, aberto anteriormente através da função fopen(), 
faz-se uso da função fclose(), passando o ponteiro como parâmetro.
• Exemplo:
FILE *ptr;
ptr = fopen(“arquivo.txt”, “w”);
if (ptr == NULL) {
printf("Não foi possível abrir!!!");
return 0;
}
fclose(ptr);
Escrevendo no arquivo
• Para escrever num arquivo, pode-se utilizar as funções fputc() e fprintf().
• Além dessas funções, é necessário que o arquivo tenha sido aberto em 
um modo que permita a escrita.
• Exemplo:
FILE *ptr;
ptr = fopen(“arquivo.txt”, “w”);
if (ptr == NULL) {
printf("Não foi possível abrir!!!");
return 0;
}
fprintf(ptr, "Texto escrito no arquivo...");
fclose(ptr);
Lendo do arquivo
• Para ler os dados de um arquivo, pode-se utilizar as funções fgetc() e 
fscanf().
• Além dessas funções, é necessário que o arquivo tenha sido aberto em 
um modo que permita a leitura.
• Exemplo:
FILE *ptr;
char frase[100];
ptr = fopen(“arquivo.txt”, “r”);
if (ptr == NULL) {
printf("Não foi possível abrir!!!");
return 0;
}
fscanf(ptr, "%s", &frase);
fclose(ptr);
Leitura utilizando EOF
Utilize o EOF para percorrer o arquivo até o final do mesmo.
char texto[100]; // variável para receber texto
FILE *p;
while( (fscanf(p,"%s",texto))!= EOF ) 
printf("%s ",texto);
Erro na abertura do arquivo
Quando abrimos um arquivo, o ponteiro que criamos do tipo FILE
armazenará o endereço de um arquivo. Porém, nem sempre esta tarefa é
possível, gerando um erro. Quando este erro ocorre o ponteiro irá
apontar para NULL, sendo essa prática (checagem se o ponteiro aponta
para NULL) muito importante para o tratamento de erros na abertura
de arquivos em C.
Este erro pode ocorrer por vários motivos. O mais óbvio é abrir um
arquivo que não existe (geralmente ocorre quando escrevemos errado o
endereço do arquivo).
Em sistemas operacionais mais seguros, como os Linux, o acesso aos
arquivos (seja para leitura, escrita ou anexação) é geralmente limitado,
não sendo possível acessar e alterar qualquer arquivo (como geralmente
ocorre em sistemas mais vulneráveis, como o Windows).
Caso você tente alterar ou acessar um arquivo sem permissão, a
função fopen também irá retornar NULL para o ponteiro.
if(arquivo == NULL)
printf("Nao foi possivel abrir o arquivo!");
Remover arquivo
• Digite a função remove e utilize como parâmetro o nome 
do arquivo.
remove("nomearquivo.txt");
Exercício
1. Crie um programa que permite , através de funções e 
por uma quantidade indefinida de vezes realizar as 
seguintes opções:
1- criar um arquivo
2 - inserir dados no arquivo(sobrescrever)
3 - inserir dados no arquivo(acrescentar)4 - exibir conteúdo do arquivo
5 - excluir arquivo
6 – sair
2. Crie um programa que recebe 4 números através de um arquivo e 
mostra quais os são os números e o resultado da sua soma.
3. Crie um programa que recebe 4 nomes através de um arquivo e 
mostra quais os são os nomes
Obrigado!!!

Continue navegando