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

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

Arquivos Continuação. Estados de um Arquivo sequencial AbertoFechado fopen(..,r) fclose() fgetc, ftell, rewind, fscanf, fgets, feof Aberto fgetc, ftell,

Apresentações semelhantes


Apresentação em tema: "Arquivos Continuação. Estados de um Arquivo sequencial AbertoFechado fopen(..,r) fclose() fgetc, ftell, rewind, fscanf, fgets, feof Aberto fgetc, ftell,"— Transcrição da apresentação:

1 Arquivos Continuação

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

3 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 Memória secundária arquivo Posição corrente 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. Estados de um Arquivo Seqüencial

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. Estados de um Arquivo sequencial AbertoFechado fopen(..,r) fclose() fgetc, ftell, rewind, fscanf, fgets, feof Aberto fgetc, ftell,"

Apresentações semelhantes


Anúncios Google