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

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

Arquivos Continuação.

Apresentações semelhantes


Apresentação em tema: "Arquivos Continuação."— Transcrição da apresentação:

1 Arquivos Continuação

2 Estados de um Arquivo sequencial
fgetc, ftell, rewind, fscanf, fgets, fputc, fprintf, fputs, feof fgetc, ftell, rewind, fscanf, fgets, feof fopen(..,”r”) fclose() Aberto Fechado Aberto fclose() fopen(..,”w+”) fopen(..,”a+) fopen(..,”r+) Estado inicial

3 Estados de um Arquivo Seqüencial
Quando o arquivo é aberto suas informações são armazenadas em um estrutura FILE (descritor). O programa fica com um apontador para file: FILE *pa; pa = fopen(“..”, “r+”) Após o arquivo ser aberto, o seu descritor mantém um cursor indicando a sua posição corrente arquivo Posição corrente Memória secundária A unidade básica de um arquivo seqüencial é um caractere Qualquer operação de leitura ou escrita sobre o arquivo avança sua posição corrente um determinada quantidade de caracteres.

4 Manipulando Arquivos Se lemos um caractere (função fgetc), a posição corrente avança 1 caractere Mas se lemos um inteiro (fscanf(pa, “%d”,..), a posição corrente avança o número de caracteres correspondente ao primeiro inteiro antes de um espaço, fim de linha ou fim de arquivo: Ex: se o arquivo tiver os os dados: e a posição corrente apontar para o primeiro caractere (primeiro zero), ao lermos um inteiro a posição corrente irá avançar 2 caracteres, parando no primeiro espaço e o numero lido será 8. Agora se a posição corrente estiver no segundo espaço e lermos mais um inteiro, o número lido será 1970.

5 Manipulando Arquivos Se lemos um string (fscanf(pa, “%s”,..) ), a posição corrente vai avançar a quantidade de caracteres correspondente a primeira seqüência de caracteres encontrada antes de um espaço ou fim de linha ou fim de arquivo. Exemplo: arquivo: oito de janeiro de mil novecentos e setenta Após o primeiro fscanf(pa, “%s”,..) a posição corrente para no primeiro espaço em branco e a string lida é “oito”

6 Manipulando Arquivos Podemos ler uma string contendo espaços em branco com a função fgets: char *fgets (char *str, int tamanho,FILE *fp); A função recebe 3 argumentos: a string a ser lida, o limite máximo de caracteres a serem lidos e o ponteiro para FILE. A função lê a string até que um caractere de nova linha seja lido ou tamanho-1 caracteres tenham sido lidos. Se o caracter de nova linha ('\n') for lido, ele fará parte da string. A string resultante sempre terminará com '\0' (por isto somente tamanho-1 caracteres, no máximo, serão lidos). Neste caso a posição corrente do arquivo avançará tamanho-1 posições.

7 Manipulando arquivos Todas as funções de leitura em um arquivo possui sua função equivalente de escrita: fgetc – fputc Fputc escreve um único caracter no arquivo fscanf – fprintf fprintf tem comportamento similar a printf fgets – fputs No caso de fputc, não se indica o tamanho da string. O prototipo desta função é: char *fputs (char *str,FILE *fp); E ela escreve no arquivo a string str (terminado com \0)

8 As funções de escrita se comportam de maneira similar a suas equivalente de escrita no console. Assim se queremos um espaços entre os dados devemos informar este espaço. Exemplo, a execução de fputc(pa, ‘a’); fputc(pa, ‘b’); , vai produzir no arquivo a seqüência ab. Se quisermos a seqüência a b, temos que imprimir: fputc(pa, ‘a’); fputc(pa, ‘ ’); fputc(pa, ‘b’);

9 A manipulação de arquivos
Cabe ao programador manipular os arquivos se baseando: No comportamento da funções que utiliza: Ex: devemos saber como a função avança a posição corrente e como espaços em branco são considerados; Nas regras de formação do arquivo Quais informações possuímos sobre o arquivo?Como o arquivo foi concebido, Nas estruturas de dados onde serão armazenados os dados lidos dos arquivos Como devo interpretar os dados lidos do arquivo? São inteiros, ponto flutuante, strings? é um seqüência, uma matriz?


Carregar ppt "Arquivos Continuação."

Apresentações semelhantes


Anúncios Google