A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Tratamento de Ficheiros. 2 Até ao momento, todos os dados têm sido inseridos nos programas através do teclado, sendo guardados em variáveis que residem.

Apresentações semelhantes


Apresentação em tema: "1 Tratamento de Ficheiros. 2 Até ao momento, todos os dados têm sido inseridos nos programas através do teclado, sendo guardados em variáveis que residem."— Transcrição da apresentação:

1 1 Tratamento de Ficheiros

2 2 Até ao momento, todos os dados têm sido inseridos nos programas através do teclado, sendo guardados em variáveis que residem em memória central (R.A.M.) Este tipo de memória apresenta no entanto os inconvenientes de ser volátil, pelo que impossibilita o armazenamento de dados após a execução de um programa Para armazenamentos mais demorados é utilizada, a memória secundária ( i.e. o disco rígido, a disquete, …), em que a informação é armazenada sob a forma de ficheiros.

3 3 Tratamento de Ficheiros A linguagem C é Device Independent, ou seja, não diferencia os vários periféricos (de entrada ou saída) ligados ao computador. A linguagem C é Device Independent, ou seja, não diferencia os vários periféricos (de entrada ou saída) ligados ao computador. Independentemente do tipo de periférico que esteja a utilizar, o C processa todas as entradas e saídas de dados através de streams. Independentemente do tipo de periférico que esteja a utilizar, o C processa todas as entradas e saídas de dados através de streams. Stream é um conjunto sequencial de caracteres, isto é, um conjunto de bytes - ficheiros. Stream é um conjunto sequencial de caracteres, isto é, um conjunto de bytes - ficheiros.

4 4 Tratamento de Ficheiros Por defeito, um programa ao executar tem 5 ficheiros automaticamente abertos : stdin - standard input (teclado) stout - standard output (monitor) stderr - standard error (monitor ou outro) stdaux - aux device (porta COM1 num PC) stdprn - standard printer

5 5 Tratamento de Ficheiros Para trabalhar com ficheiros necessita da biblioteca stdio.h Para trabalhar com ficheiros necessita da biblioteca stdio.h A linguagem C suporta dois tipos de ficheiros : Ficheiro de Texto – é um ficheiro constituído apenas pelos caracteres existentes no nosso teclado, e em geral formatado apenas com o carácter New Line (\n) Ficheiro Binário – podem ser constituídos por qualquer carácter existente na tabela ascci

6 6 Tratamento de Ficheiros Operações básicas sobre ficheiros: Operações básicas sobre ficheiros: Para trabalhar com um qualquer ficheiro, a primeira operação a realizar é ligar uma variável do nosso programa a esse ficheiro. A esta operação dá-se o nome de Abertura do ficheiro. Para trabalhar com um qualquer ficheiro, a primeira operação a realizar é ligar uma variável do nosso programa a esse ficheiro. A esta operação dá-se o nome de Abertura do ficheiro. Após a abertura do ficheiro, podemos realizar operações sobre o conteúdo do ficheiro: Após a abertura do ficheiro, podemos realizar operações sobre o conteúdo do ficheiro: Ler dados Ler dados Escrever dados Escrever dados Após efectuadas as operações pretendidas sobre o ficheiro terá de Fechar o ficheiro. Após efectuadas as operações pretendidas sobre o ficheiro terá de Fechar o ficheiro.

7 7 Abertura de um ficheiro A função que permite a abertura de um ficheiro é a seguinte: fopen(), cuja sintaxe é a seguinte: A função que permite a abertura de um ficheiro é a seguinte: fopen(), cuja sintaxe é a seguinte: FILE *fopen(char *nome_do_ficheiro, char *modo_de_abertura) A função devolve: um apontador para um FILE, que passa a ser utilizado em todos os acessos ao ficheiro (isto se conseguir abrir o ficheiro); NULL se ocorrer um erro na abertura; A função recebe dois parâmetros: nome_do_ficheiro – nome do ficheiro a abrir modo_de_abertura – modo de abertura do ficheiro

8 8 Modos de abertura de um ficheiro r (read) Abre o ficheiro para leitura. Caso não seja possível abrir o ficheiro, a função devolve NULL. w (write) Abre o ficheiro para escrita. Se o ficheiro não existir, é criado com o nome passado à função. Se o ficheiro já existir, é apagado e criado um novo com o mesmo nome. Caso não seja possível criar o ficheiro, a função devolve NULL. a (append) Abre o ficheiro para acrescento, no fim do ficheiro. Se o ficheiro existir, os novos dados são escritos no fim do ficheiro. Se o ficheiro não existir, é criado.

9 9 Modos de abertura de um ficheiro r+ Abre o ficheiro para leitura e escrita. Se o ficheiro não existir, é criado. Se o ficheiro existir, os novos dados são escritos a partir do início do ficheiro, sobre os que já lá existem. w+ Abre o ficheiro para leitura e escrita. Se o ficheiro não existir, é criado. Se o ficheiro já existir, é apagado e criado um novo com o mesmo nome. a+ Abre o ficheiro para leitura e escrita. Se o ficheiro não existir, é criado. Se o ficheiro já existir, os novos dados são colocados a partir do fim do ficheiro.

10 10 Abertura de um ficheiro #include main( ) { FILE *fp; fp = fopen (oMeuFicheiro.txt, r); if (fp==NULL) { printf (ERRO – não foi possível abrir o ficheiro !); system(pause); exit(1); } else { printf (Abertura com sucesso !); } … system(pause); }

11 11 Fecho de um ficheiro Após ter feito as operações sobre um ficheiro, terá de o fechar. A função que permite o fecho de um ficheiro é a função fclose(), cuja sintaxe é a seguinte: Após ter feito as operações sobre um ficheiro, terá de o fechar. A função que permite o fecho de um ficheiro é a função fclose(), cuja sintaxe é a seguinte: int fclose (FILE *fp) Esta função fecha o ficheiro apontado por fp Em caso de erro (i.e. fechar um ficheiro que ainda não foi aberto) retorna EOF, se fechou o ficheiro com sucesso retorna zero. Normalmente não se verifica o valor devolvido por esta função.

12 12 Fecho de um ficheiro #include main( ) { FILE *fp; fp = fopen (oMeuFicheiro.txt, r); if (fp==NULL) { printf (ERRO – não foi possível abrir o ficheiro !); system(pause); exit(1); } else { printf (Abertura com sucesso !); } fclose(fp); system(pause); }

13 13 Funções para leitura/escrita num ficheiro fscanf() Sintaxe: int fscanf (FILE *fp, const char, *format,...) Exemplo: char letra; … fscanf (fp, %c, &letra); fprintf() Sintaxe: int fprintf (FILE *fp, const char, *format,...) Exemplo: char letra; letra=a; … fprintf (fp, %c, letra); A utilização das funções seguintes exigem que o ficheiro tenha sido previamente aberto no modo mais apropriado.

14 14 Funções para leitura/escrita num ficheiro fgets() fgets() Sintaxe: Sintaxe: char *fgets( char *s, int n, FILE *fp ) Exemplo: char nome[100]; … fgets(nome, 100, fp); fputs() fputs() Sintaxe: Sintaxe: int fputs( const char *s, FILE *fp ) Exemplo: Exemplo: char nome[100]; strcpy(nome,olá mundo!); … fputs(nome, fp); Escrita/leitura de strings

15 15 Funções para leitura/escrita num ficheiro fgetc() fgetc() Sintaxe: Sintaxe: int fgetc ( FILE *fp ) Exemplo: Exemplo: char letra; …letra=fgetc(fp); fputc() fputc() Sintaxe: Sintaxe: int fputc ( int ch, FILE *fp ) Exemplo: Exemplo: char letra; … fputc(letra, fp); Escrita/leitura de caracteres

16 16 Exemplos em C grava.c grava.c grava.c le.c le.c le.c

17 17 Tratamento de Ficheiros Ficheiros binários

18 18 Ficheiros binários Podem ser constituídos por qualquer carácter existente na tabela ascci; Os dados não se encontram organizados em linhas; Executáveis e imagens são exemplos de ficheiros binários; O acesso a este tipo de ficheiros designa-se por acesso directo; As funções que permitem realizar a leitura e escrita, através de aceso directo são: fread fwrite Para abrir um ficheiro em modo binário é necessário acrescentar um b ao modo de abertura, pois por defeito o ficheiro é aberto em modo de texto.

19 19 Ficheiros binários Modos de abertura de um ficheiro binário: Modos de abertura de um ficheiro binário: rb rb wb wb ab ab rb+ rb+ wb+ wb+ ab+ ab+

20 20 Abertura de um ficheiro binário #include main( ) { FILE *fp; fp = fopen (oMeuFicheiro.dat, rb); if (fp==NULL) { printf (ERRO – não foi possível abrir o ficheiro binário !); system(pause); exit(1); } else { printf (Abertura com sucesso !); } … system(pause); }

21 21 Leitura/Escrita de ficheiros binários As funções vistas até agora (fputs, fgets, fprintf, fscanf, …) permitem-nos apenas fazer a leitura e escrita num ficheiro, mas apenas de caracteres, valores numéricos e strings. As funções vistas até agora (fputs, fgets, fprintf, fscanf, …) permitem-nos apenas fazer a leitura e escrita num ficheiro, mas apenas de caracteres, valores numéricos e strings. As duas funções que vamos analisar de seguida, permitem- nos ler e escrever um determinado número de bytes. As duas funções que vamos analisar de seguida, permitem- nos ler e escrever um determinado número de bytes. As duas funções são as seguintes: As duas funções são as seguintes: fread fread fwrite fwrite

22 22 fread – leitura de ficheiros binários A função que permite a leitura é a seguinte: int fread ( const void *ptr, int size, int num, FILE *fp) Onde: ptr – endereço em memória onde se pretende colocar os dados size – tamanho (em bytes) de cada uma dos elementos a ler num – número de elementos a ler fp – apontador para o ficheiro de onde vamos ler a informação

23 23 fread – leitura de ficheiros binários struct info { int num_aluno; int num_aluno; char nome[100]; char nome[100]; int idade; int idade;}; struct info dados; main(){… /* abrir o ficheiro em modo de leitura */ … fread(&dados, sizeof(struct info), 1, fp); …}

24 24 fwrite – escrita em ficheiros binários A função que permite a leitura é a seguinte: int fwrite (const void *ptr, unsigned size, int num, FILE *fp) Onde: ptr – endereço em memória de onde estão os dados a escrever; size – tamanho (em bytes) de cada uma dos elementos a escrever; num – número de elementos a escrever; fp – apontador para o ficheiro onde vamos escrever a informação.

25 25 fwrite – escrita em ficheiros binários struct info { int num_aluno; int num_aluno; char nome[100]; char nome[100]; int idade; int idade;}; struct info dados; main(){… /* abrir o ficheiro em modo de escrita*/ … fwrite(&dados, sizeof(struct info), 1, fp); …}

26 26 Exemplos em C grava.c grava.c grava.c le.c le.c le.c


Carregar ppt "1 Tratamento de Ficheiros. 2 Até ao momento, todos os dados têm sido inseridos nos programas através do teclado, sendo guardados em variáveis que residem."

Apresentações semelhantes


Anúncios Google