Você está na página 1de 15

UFSM

COLGIO AGRCOLA DE FREDERICO WESTPHALEN


CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET

Linguagem de Programao

Aula 13 Linguagem de
Programao C Arquivos
(Resumo)

Prof.: Teresinha Letcia da Silva


leticia@cafw.ufsm.br
Resumo - Arquivos em C
Na manipulao de um arquivo, h
basicamente trs etapas que precisam ser
realizadas:

1. abrir o arquivo;
2. ler e/ou gravar os dados desejados;
3. fechar o arquivo..
Resumo - Arquivos em C
Declarao da varivel

FILE *variavel;

Abrir o arquivo

variavel =
fopen(nome_arquivo,modo);

Fechar o arquivo
Resumo - Arquivos em C
Funes de escrita e gravao
fputc: Grava um nico caracter no arquivo

fprintf : Grava dados formatados no arquivo,


de acordo com o tipo de dados (float, int,
...). Similar ao printf, porm ao invs de
imprimir na tela, grava em arquivo

fwrite : Grava um conjunto de dados


heterogneos (struct) no arquivo.
Resumo - Arquivos em C
Funes de leitura
fgetc - Recebe apenas um caractere.
fgets - L uma string (geralmente uma linha
inteira).
fscanf- Recebe uma string formatada.
fread - L dados binrios de um arquivo
(registros).
Exemplo: lendo e gravando
arquivo de texto
- Ler dados formatados de um arquivo:
fscanf(arquivo,codigo de formato,&variavel)

Ex.:
fscanf(arq,%d %c,&num,&letra);

- Gravar dados formatados em um arquivo:


fprintf(arquivo,codigo de formato,variavel)

Ex:
fprintf(arq,%d %c,num,letra);
Exemplo: lendo e gravando
arquivo de texto
- Faa um programa em C que apresente um
menu de opes: 1 Ler nome 2- Listar
nomes 3-Sair. Na opo 1 deve ser lido um
nome de pessoa e gravado num arquivo. Na
opo 2 deve ser lido os nomes gravados no
arquivo e enviados para um vetor de nomes.
Exemplo: lendo e gravando
arquivo de texto
#include <stdio.h>

FILE *arq;

void lernome()
{
char nome[35];

printf("Digite um nome");
fflush(stdin);
gets(nome);
fprintf(arq,"%s \n",nome);
}
Exemplo: lendo e gravando
arquivo de texto
void escrevernomes()
{
char nomes[100][35];
int i=0,x;

rewind(arq);

while(!feof(arq))
{
fscanf(arq,"%s",nomes[i]);
i++;
}
for(x=0;x<i;x++)
{
printf("\n %s",nomes[x]);
}
}
Exemplo: lendo e gravando
arquivo de texto
int main()
{
int op;
arq=fopen("nomes.txt","a+");
if (arq==NULL)
printf("Erro ao abrir o arquivo");
do {
printf("\n Escolha sua opo: 1- Ler nome 2 - Listar 3 - Sair");
scanf("%d",&op);
switch(op) {
case 1:
lernome();
break;
case 2:
escrevernomes(); }
}
while(op!=3);
fclose(arq);
}
Exemplo: lendo e gravando
arquivos binrios (registros)
- Ler dados formatados de um arquivo:
fwrite(estrutura, tamanho, nroregistros, arquivo);

Ex.:
fwrite(&aluno,sizeof(aluno),1,arq);

- Gravar dados formatados em um arquivo:


fread(estrutura, tamanho, nroregistros, arquivo);

Ex.:
fread(&aluno,sizeof(aluno),1,arq);
Exemplo
1 Declarar a estrutura e a varivel ponteiro para o arquivo:

#include <stdio.h>
struct dados{
char nome[30];
int idade;
} aluno;

FILE *arq;
Exemplo
2 Na funo main, inicia-se abrindo o arquivo. Neste processo,
associa-se a varivel definida anteriormente a um arquivo fsico
no disco. Escolhe-se tambm o modo de abertura do arquivo.
Se retornar NULL ocorreu um erro neste processo.

int main()
{
int x;

arq = fopen ("arquivo.txt", "a+");


if (arq == NULL) {
printf ("Houve um erro ao abrir o arquivo.\n");
return 1;
}
Exemplo
3 Caso tenha aberto normalmente o arquivo, deve-se ler os dados e
gravar no arquivo, usando a funo fwrite. A mesma retorna a
quantidade de registros gravados.

else
{
printf("Informe o nome do aluno: \n");
gets(aluno.nome);
printf("Informe a idade do aluno: \n");
scanf("%d",&aluno.idade);
x = fwrite(&aluno,sizeof(aluno),1,arq);
if (x==1)
printf("Dados gravados com sucesso.\n");
else
printf("Erro na gravao. \n");
}
Exemplo
4 Aps, para escrever os dados gravados no arquivo, deve-se voltar
para o incio do mesmo com o rewind, e fazer um loop enquanto no
chegar ao final do arquivo, para a leitura dos dados.

rewind(arq);
while(!feof(arq))
{
fread(&aluno,sizeof(aluno),1,arq);
printf("Nome: %s\n",aluno.nome);
printf("Idade: %d\n",aluno.idade);
}
fclose (arq);
return 0;
}