Buscar

Manipulação de Arquivos em C

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

SI 200 – Algoritmos e Programac¸a˜o
de Computadores II
Prof. Cla´udio Alessandro de Carvalho Silva
cacs@ft.unicamp.br
Aula 10
Manipulac¸a˜o de Arquivos em C
Conteu´do
1 Introduc¸a˜o
2 Manipulac¸a˜o de Arquivos em C
3 Exemplos
4 Refere^ncias
U¨bersicht
1 Introduc¸a˜o
2 Manipulac¸a˜o de Arquivos em C
3 Exemplos
4 Refere^ncias
Arquivos
Como manter dados persistentes utilizados ou gerados
por um programa?
Arquivos sa˜o estruturas de dados manipuladas fora da
memo´ria principal.
Exemplo
Um sistema de banco de dados e´ composto por um ou va´rios
arquivos, onde cada arquivo possui programas responsa´veis
pelas seguintes operac¸o˜es:
Inclusa˜o
Exclusa˜o lo´gica
Exclusa˜o f´ısica
Alterac¸a˜o
Consultas
U¨bersicht
1 Introduc¸a˜o
2 Manipulac¸a˜o de Arquivos em C
3 Exemplos
4 Refere^ncias
Arquivos em C
O C ve^ cada arquivo como um simples fluxo sequencial
de bytes.
O C na˜o impo˜e nenhuma estrutura a um arquivo.
Um “arquivo” em C pode representar diversas coisas:
arquivos em disco, impressora, teclado ou qualquer
dispositivo de E/S.
Quando um programa e´ iniciado, tre^s arquivos sa˜o
associados a ele: standard input, standard output e
standard error.
Declarac¸a˜o de arquivos em C
Biblioteca stdio.h
As varia´veis que representam arquivos sa˜o declaradas
como ponteiros do tipo FILE
FILE *arq, *file, *aux, *pont;
Tipos de arquivos
Arquivos texto.
Arquivos bina´rios.
Modos de abertura de arquivos
Leitura – read – “r”: se o arquivo na˜o existir retorna
erro.
Escrita – write – “w”: cria novo arquivo mesmo se ja´
existir.
Edic¸a˜o – append – “a”: abre arquivo existente ou cria
se na˜o existir.
Abertura/criac¸a˜o de arquivo: fopen()
FILE *fopen(nome_do_arquivo, modo_de_abertura);
nome do arquivo e´ o nome do arquivo no sistema
operacional, podendo incluir o path.
modo de abertura define propriedades e tipos de
operac¸o˜es va´lidas.
Exemplo
1 FILE * arq;
2 arq = fopen("arquivo1.dat", "w");
3
4 if (arq == NULL) /* ou arq == 0 ou !arq */
5 {
6 printf("\nErro.␣O␣arquivo␣n~ao␣foi␣aberto.");
7 getch();
8 }
9 else {
10 /* as demais instruc¸~oes do programa */
11 }
Fechamento de arquivo: fclose()
int fclose(FILE *arq);
Retorna 0 se o arquivo foi fechado corretamente.
Retorna outro valor em caso de erro.
Escreve um caractere: fputc()
int fputc(char c, FILE *arq);
Se bem sucedido, retorna o valor caractere.
Sena˜o retorna EOF.
Le^ um caractere: fgetc()
int fgetc(FILE *arq);
Se bem sucedido, retorna o valor caractere.
Sena˜o retorna EOF.
Exemplo
1 #include <stdio.h>
2 int main ()
3 {
4 FILE * pFile;
5 int c;
6 int n = 0;
7 pFile=fopen ("myfile.txt","r");
8 if (pFile==NULL) perror ("Error␣opening␣file");
9 else
10 {
11 do {
12 c = fgetc (pFile);
13 if (c == ’$’) n++;
14 } while (c != EOF);
15 fclose (pFile);
16 printf ("The␣file␣contains␣%d␣characters␣($).\n",n);
17 }
18 return 0;
19 }
Escreve string: fputs()
int fputs(const char *str, FILE *arq);
Semelhante ao puts.
Na˜o inclui ∖n no fim da string.
Exemplo
1 #include <stdio.h>
2
3 int main ()
4 {
5 FILE * pFile;
6 char sentence [256];
7
8 printf ("Enter␣sentence␣to␣append:␣");
9 fgets (sentence,256,stdin);
10 pFile = fopen ("mylog.txt","a");
11 fputs (sentence,pFile);
12 fclose (pFile);
13 return 0;
14 }
Le^ string: fgets()
char * fgets(char * str, int tam, FILE * stream);
Semelhante ao gets.
Inclui ∖n no fim da string.
Exemplo
1 #include <stdio.h>
2
3 int main()
4 {
5 FILE * pFile;
6 char mystring [100];
7
8 pFile = fopen ("myfile.txt" , "r");
9 if (pFile == NULL) perror ("Error␣opening␣file");
10 else {
11 if ( fgets (mystring , 100 , pFile) != NULL )
12 puts (mystring);
13 fclose (pFile);
14 }
15 return 0;
16 }
Func¸o˜es fprintf() e fscanf()
fprintf(arq, "string de controle", argumentos);
fscanf(arq, "string de controle", argumentos);
Ide^nticas a printf() e scanf().
Escreve qualquer tipo de dado fwrite()
size_t fwrite(
void *mem, size_t qtd_bytes, size_t cont, FILE *arq);
Escreve qualquer tipo de dado.
mem representa o conteu´do a ser gravado.
cont representa o nu´mero de espac¸o de memo´ria do tamanho
qtd bytes que devem ser gravados.
Se bem sucedido, retorna cont.
Le^ qualquer tipo de dado fread()
size_t fread(
void *mem, size_t qtd_bytes, size_t cont, FILE *arq);
Le^ qualquer tipo de dado.
mem varia´vel que vai receber o conteu´do lido.
cont representa o nu´mero de espac¸o de memo´ria do tamanho
qtd bytes que devem ser lidos.
Se bem sucedido, retorna cont.
Exemplo
1 double var, aux;
2 var = 0.3045;
3
4 fwrite(&var, sizeof(double), 1, arq);
5 fread(&aux, sizeof(double), 1, arq);
Procura byte espec´ıfico fseek()
int fseek(FILE * stream, long int qtd_bytes, int posicao);
Posiciona o o ponteiro de leitura em um enderec¸o espec´ıfico
tornando poss´ıveis leituras e escritas aleato´rias.
qtd bytes que sera´ percorrida a partir de posicao.
posicao
SEEK SET – in´ıcio do arquivo.
SEEK CUR – posic¸a˜o do arquivo.
SEEK END – fim do arquivo.
Exemplo
1 #include <stdio.h>
2
3 int main ()
4 {
5 FILE * pFile;
6 pFile = fopen ( "example.txt" , "wb" );
7 fputs ( "This␣is␣an␣apple." , pFile );
8 fseek ( pFile , 9 , SEEK_SET );
9 fputs ( "␣sam" , pFile );
10 fclose ( pFile );
11 return 0;
12 }
Apo´s execuc¸a˜o o arquivo example.txt conte´m...
This is a sample.
Outras func¸o˜es u´teis
Determina final de arquivo feof()
int feof(FILE * stream);
Volta cursor para in´ıcio do arquivo rewind()
void rewind (FILE * stream);
Apaga arquivo remove()
int remove (FILE * stream);
Descarrega buffer fflush()
int fflush (FILE * stream);
U¨bersicht
1 Introduc¸a˜o
2 Manipulac¸a˜o de Arquivos em C
3 Exemplos
4 Refere^ncias
U¨bersicht
1 Introduc¸a˜o
2 Manipulac¸a˜o de Arquivos em C
3 Exemplos
4 Refere^ncias
Refere^ncias
DEITEL, H. M., DEITEL, P. J., Como Programar em C. Rio de
Janeiro: LTC, 1999. Cap. 11.
TENENBAUM, A. M., LANGSAM, Y. AUGESTEIN, M. J.
Estruturas de Dados Usando C, Makron Books, 1995.
WIRTH, N. Algoritmos e Estruturas de Dados, Prentice Hall, 1996.
	Introdução
	Manipulação de Arquivos em C
	Exemplos
	Referências

Outros materiais