Buscar

Parte 6 _ Arquivos (Parte 1)

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

Prof. Edson J. R. Justino
Prof. Claudio Carvilhe
Parte 6
Pontifícia Universidade Católica do Paraná - PUCPR
ARQUIVOS EM C
� A biblioteca C oferece três categorias para 
manipulação de arquivos, que são:
� Alto Nível
São chamadas de buffered stream (rotinas de 
saída com área intermediária de memória) 
porque o buffer se interpõe entre o arquivo e o 
programa
� Médio Nível
São chamados de no buffered, porque o 
programa acessa o arquivo diretamente (através do sistema operacional SO). Não será
abordada nesse estudo.
� Baixo Nível
Usam níveis não portáveis do BIOS, não será
abordada nesse estudo.
ARQUIVOS EM C
� As rotinas de médio e alto nível possuem dois 
modos de manipulação de dados, o modo texto e 
o modo binário
� Modo texto
� É usado como arquivo texto, ou arquivos que armazenam 
texto no formato ASCII(programas fontes, etc.)
� Modo binário
� É usado em arquivos que armazenam dados na forma 
binária( imagens, sons, programas executáveis, etc.). 
� No modo texto, o caractere Ctrl+z (um byte 
contendo o valor 0x1A) é a marca de final de 
arquivo. 
� Nos arquivos binários Ctrl+z é uma parte legal (dado) do arquivo, o SO é quem guarda o 
tamanho do arquivo (no diretório).
ENTRADA E SAÍDA EM ALTO NÍVEL
� Todas as funções de I/O em alto nível, necessitam que 
se inicie o programa com #include <stdio.h>. Esse 
arquivo header, contém as definições para FILE, o tipo 
que se usa para manipular arquivos
#include <stdio.h>
.
.
FILE *fp;
sendo *fp um ponteiro para a estrutura do tipo FILE.
ENTRADA E SAÍDA EM ALTO NÍVEL
� Abrindo um arquivo
� Antes de você acessar um arquivo para leitura , 
gravação ou ambos, você deve inicialmente abrir o 
arquivo. Para as rotinas de I/O com buffers, você deve 
usar um ponteiro para o arquivo e abrir o mesmo com a 
função fopen( )
Ex:
fp = fopen(nomearq, operação);
Abrir p/ leitura, gravação ou ambos
path - nome do arquivo
ENTRADA E SAÍDA EM ALTO NÍVEL
� Tabela de operações
� Com a adição da letra b é possível manipular os arquivos 
binários. Ex. “rb”, “wb”, “ab”, “r+b”, “w+b” e “a+b”
modomodo DescriDescriççãoão
““rr”” Abre para leitura apenas. O arquivo deve existir.Abre para leitura apenas. O arquivo deve existir.
““ww”” Abre para gravaAbre para gravaçção apenas. Cria o arquivo se não existir e apaga o antigo se jão apenas. Cria o arquivo se não existir e apaga o antigo se jáá existir e existir e 
cria um novo.cria um novo.
““aa”” Abre para inclusão. Grava novos dados no final do arquivo.Abre para inclusão. Grava novos dados no final do arquivo.
““r+r+”” Abre para Abre para leitura/gravaleitura/gravaççãoão. O arquivo deve existir.. O arquivo deve existir.
““w+w+”” Abre para Abre para leitura/gravaleitura/gravaççãoão. Cria o arquivo se não existir e apaga se j. Cria o arquivo se não existir e apaga se jáá existir criando um existir criando um 
novo.novo.
““a+a+”” Abre para Abre para leitura/gravaleitura/gravaççãoão, Grava novos dados no final do arquivo. Cria um novo arquivo , Grava novos dados no final do arquivo. Cria um novo arquivo 
se não existir.se não existir.
ENTRADA E SAÍDA EM ALTO NÍVEL
� Cada arquivo aberto requer um ponteiro 
para si
#include <stdio.h>
.
.
FILE *fp_in, *fp_out;
.
.
fp_in = fopen("teste.txt","r");
fp_out = fopen("teste2.txt","w");
LENDO UM CARACTER DO ARQUIVO
� O fgetc( ) é uma versão para arquivo da 
função getchar( )
� Ela retorna o próximo caractere lido do 
arquivo
� Usando uma variável do tipo inteiro 
podemos identificar o final de arquivo 
facilmente.
LENDO UM BYTE DO ARQUIVO
if((ch= fgetc(fp)) == EOF)
{
/* Se for o final do arquivo */
}
� A chamada para fopen( ) com o operador "rb" :
fp = fopen(“nome do arquivo”, "rb")
é uma declaração específica do PC. O "rb" 
habilita a abertura de arquivo binários
LENDO UM CARACTER DO ARQUIVO
� Tabela de definições
modomodo DescriDescriççãoão
tt texttext modemode -- converte converte carriegecarriege return/linereturn/line feedfeed em um em um lineline feedfeed na leitura e o na leitura e o 
contrcontráário na gravario na gravaçção. ão. Ctrl+zCtrl+z éé a marca de final de arquivo.a marca de final de arquivo.
bb binarybinary modemode -- Elimina as conversões. O sistema operacional guarda o Elimina as conversões. O sistema operacional guarda o 
tamanho do arquivo.tamanho do arquivo.
FECHANDO ARQUIVOS
� Você deve fechar cada arquivo aberto após o 
uso.
� Fechar um arquivo aberto para escrita significa 
atualizar a entrada do diretório para o arquivo e 
liberar o ponteiro de arquivo.
if ( fclose(fp) == EOF)
{
/* Não habilitado p/ fechamento */
}
Exemplo de leitura de arquivo 
texto
/****************************************
Lista um arquivo texto
****************************************/
#include <stdio.h> /* para FILE e EOF */
int main() {
FILE *fp;
int ch;
char nome_arquivo[50];
printf("entre com o caminho e nome do arquivo\n");
scanf("%s", nome_arquivo); fflush(stdin);
if ((fp = fopen(nome_arquivo,"rt")) == NULL){
printf("Não abriu %s\n",nome_arquivo);
system("PAUSE");
return(-1);
}
while ((ch = fgetc(fp)) != EOF){
printf("%c", ch);
}
if ( fclose(fp) == EOF)
printf("arquivo não pode ser fechadio\n");
system("PAUSE");
return 0;
}

Outros materiais