aula13-arquivos_Rachel
aula13-arquivos_Rachel
aula13-arquivos_Rachel
Aula 13
Arquivos
Responsável
Seiji Isotani, Rafaela V. Rocha
sisotani@icmc.usp.br
rafaela.vilela@gmail.com
PAE: Armando M. Toda, Geiser Chalco
armando.toda@gmail.com
geiser.gcc@gmail.com
Linguagem de Programação “C”
Agenda:
• Uso de Arquivos:
Conceitos, Tipos e Funções de manipulação de arquivos
• Exercícios
2
Linguagem de Programação “C”
Arquivos em “C”:
Tipos de Dispositivos de E/S
STDIN, STDOUT, STDERR => Arquivos padrão, abertos e prontos para o uso
Exemplos:
fprintf (stdout, “Hello World!\n”); /* fprintf = file-printf */
4
Arquivos: Conceitos e Funções
Arquivos em “C”:
Tipos de Arquivos
6
Arquivos: Conceitos e Funções
7
Arquivos: Conceitos e Funções
Manipulação de Arquivos
1. Incluir o <stdio.h>: #include <stdio.h>
2. Declarar uma Variável do Tipo Arquivo (ponteiro para arquivo)
FILE *<nome_variável>; /* Arquivos já existentes: stdin, stdout, stderr */
3. Funções e Procedimentos pré-definidos na Linguagem C
para a Manipulação de Arquivos: <stdio.h>
fopen - Abre um arquivo para leitura, escrita ou alteração
fclose - Fecha o arquivo
fprintf - Escreve dados em um arquivo
fscanf - Lê dados de um arquivo
feof - Testa para ver se encontramos o EoF (End-of-File)
Exemplo: # include <stdio.h>
FILE *Arquivo; FILE *Arquivo; char Texto[100];
Arquivo = fopen ("dados.txt","w"); Arquivo = fopen ("dados.txt","r");
fprintf (Arquivo,"Hello World!"); fscanf (Arquivo, "%s", Texto);
fclose (Arquivo); fclose(Arquivo);
8
Arquivos: Conceitos e Funções
Manipulação de Arquivos
Funções e Procedimentos da Linguagem para manipular arquivos
fopen - Abrir arquivo
Abre um arquivo para leitura, escrita ou alteração
FILE *fopen (const char *filename, const char *mode); /* modes: b, r, w, a, + */
Exemplo: arqptr = fopen (NomeArq, "w");
if (arqptr == NULL) { printf ("\n\nErro no arquivo!\n\n"); exit(0); }
Manipulação de Arquivos
Funções e Procedimentos da Linguagem para manipular arquivos
fopen - Abrir arquivo
Abre um arquivo para leitura, escrita ou alteração
FILE *fopen (const char *filename, const char *mode); /* modes: b, t, r, w, a, + */
Exemplo: arqptr = fopen (NomeArq, "w");
if (arqptr == NULL) { printf ("\n\nErro Modos:
no arquivo!\n\n"); exit(0); }
FILE *fopen ( <nome_arquivo>, <modo_abertura> ) b = bínário Ex.: 123 => Binário (byte)
t = texto Ex.: 123 => ASCII (texto)
Exemplo: FILE *arquivo; arquivo = fopen (“c:\arquivo.txt”,”rt”);
r = read '1' '2' '3'
Parâmetros: modo_abertura => r (read), w (write), a (append),
w = write + (r/w)
b(binário), t (texto). Exemplos: “rt”, “wb”,
a =“r+” ...
append
Retorno: NULL se ocorrer um erro na abertura, !(NULL) se funcionar
+ = read/write
Manipulação de Arquivos
Funções e Procedimentos da Linguagem para manipular arquivos
11
Arquivos: Conceitos e Funções
Manipulação de Arquivos
12
Arquivos: Conceitos e Funções
Manipulação de Arquivos
#include <stdio.h> #include <stdio.h>
le-palavras.c grava-palavras.c
FILE *arqtxt; FILE *arqtxt;
int main ( ) int main ( )
{ {
char palavra[256]; char palavra[256];
Manipulação de Arquivos
Exemplo: #include <stdio.h> salva-texto.c
#define NomeArq "Texto.txt"
FILE *ArqOut;
char Texto[100];
char codigo;
int main()
{
if ( ArqOut=fopen(NomeArq,"w") )
{
codigo=' ';
while (codigo != '#')
{
scanf("%s",Texto);
fprintf(ArqOut,"%s\n",Texto);
codigo=Texto[0];
}
fclose(ArqOut);
}
else printf ("Erro na criacao do arquivo de saida!");
}
14
Arquivos: Conceitos e Funções
Manipulação de Arquivos
Funções e Procedimentos da Linguagem para manipular arquivos
fgets - Ler uma linha de texto do arquivo [gets]
Lê uma string terminada por um ‘\n’. Acrescenta um ‘\0’ na string.
char *fgets (char *buffer, int maxlength, FILE *file);
Exemplo: fgets (texto, 255, arqptr);
fputs - Escrever uma linha de texto no arquivo [puts]
Escreve uma string, substituindo o ‘\0’ por um ‘\n’.
int fputs (const char *string, FILE *file);
Exemplo: fputs (texto, arqptr);
NULL = Ponteiro nulo ( \0 ) - Erro de abertura de arquivo [fopen]
fwrite, fread - Arquivos Binários (blocos de dados)
Manipulação de Arquivos
Exemplo: #include <stdio.h> salva-texto1.c
#define NomeArq "Texto.txt"
FILE *ArqOut;
char Texto[100];
char codigo;
int main()
{
if ( ArqOut=fopen(NomeArq,"w") )
{
codigo=' ';
while (codigo != '#')
{
gets(Texto);
fputs(Texto, ArqOut);
fputs("\n",ArqOut);
codigo=Texto[0];
}
fclose(ArqOut);
}
else printf ("Erro na criacao do arquivo de saida!");
} 16
Arquivos: Conceitos e Funções
FILE *Arquivo;
int main()
{
Arquivo=fopen("saida.txt","w");
if (Arquivo == NULL) exit(0);
fclose(Arquivo);
system("PAUSE");
return 0;
} 17
Arquivos: Conceitos e Funções
FILE *Arquivo;
int main()
{
char nome[30];
Arquivo=fopen("entrada.txt","r");
if (Arquivo == NULL) exit(0);
printf("Qual o seu nome: ");
fscanf(Arquivo,"%s",nome);
printf("Nome: %s\n",nome);
fclose(Arquivo);
system("PAUSE");
return 0;
}
18
Arquivos: Conceitos e Funções
FILE *Arquivo;
int Vetor[10]; /* Exibe na tela os numeros lidos */
for (i=0; i < 10; i++)
int main() printf("Numero [%d]: %d\n", i, Vetor[i]);
{
int i; fclose(Arquivo);
system("PAUSE");
Arquivo=fopen("numeros.txt","r");
return 0;
if (Arquivo == NULL) exit(0); }
/* Le 10 numeros de um arquivo */
for (i=0; i < 10; i++)
fscanf(Arquivo,"%d", &Vetor[i]);
19
Arquivos: Conceitos e Funções
FILE *Arquivo;
int Vetor[10];
/* Grava em disco os 10 numeros lidos */
int main() for (i=0; i < 10; i++)
{ fprintf(Arquivo,"%d\n", Vetor[i]);
int i;
fclose(Arquivo);
Arquivo=fopen("nros-salvos.txt","w");
system("PAUSE");
if (Arquivo == NULL) exit(0);
return 0;
/* Le 10 numeros digitados pelo teclado */ }
for (i=0; i < 10; i++)
{
printf ("Entre com o nro. %d : ", i);
scanf("%d", &Vetor[i]);
}
20
Exercício