Professional Documents
Culture Documents
ARQUIVOS TEXTO
Um arquivo aberto em modo texto interpretado em C como seqncias de caracteres agrupadas em linhas. As linhas so separadas por um nico caractere chamado caractere de nova linha ou LF (line feed), de cdigo ASCII 10 decimal. equivalente ao caractere '\r'.
ARQUIVOS TEXTO
As funes fopen() e fclose()
Quando abrimos um arquivo, a informao que recebemos (se o arquivo for aberto) um ponteiro para a estrutura FILE. Cada arquivo que abrimos ter uma estrutura FILE com um ponteiro para ela. A funo fopen() tem a seguinte sintaxe:
Esta funo recebe como argumentos o nome do arquivo a ser aberto (filename) e o modo de abertura (mode). Retorna um ponteiro para a estrutura FILE, que armazena informaes sobre o arquivo aberto.
ARQUIVOS TEXTO
O nome do arquivo pode ser fornecido com ou sem o diretrio onde ele est localizado. Caso se deseje fornecer o caminho completo do arquivo, lembre-se que a contrabarra em C no um caractere, e sim um meio de fornecer caracteres especiais. O caractere contrabarra representado por '\\'. Ou seja, em DOS o caminho completo de um arquivo pode ser, por exemplo, "C:\\temp\\saida.txt".
ARQUIVOS TEXTO
Diferentes modos de abertura de arquivos:
ARQUIVOS TEXTO
Se um arquivo for aberto, a funo retorna um ponteiro para a estrutura FILE contendo as informaes sobre o arquivo. Caso contrrio, retorna NULL. O erro na abertura de arquivo pode ser causado por diversos fatores: espao insuficiente em disco (no caso de gravao), arquivo inexistente (no caso de leitura) etc. Ao ser aberto um arquivo necessrio que ele seja fechado aps utilizado. Isto feito por meio da funo fclose(). Sua sintaxe a seguinte:
Exemplo:
ARQUIVOS TEXTO
As funes getc() e putc()
A funo getc() l um caractere por vez do arquivo.
Sua sintaxe :
A funo recebe como argumento um ponteiro para FILE e retorna o caractere lido. Em caso de erro, retorna EOF. A funo putc() o complemento de getc(). Ela escreve um caractere no arquivo.
Sua sintaxe
A funo recebe como argumentos um caractere e um ponteiro para FILE. O valor retornado o prprio caractere fornecido. Em caso de erro, a funo retorna EOF.
ARQUIVOS TEXTO
As funes fgets () e fputs()
A funo fgets() tem a seguinte sintaxe.
char* fgets(char* s, int n, FILE* f);
Esta funo l caracteres do arquivo f e os coloca na string s. A funo pra de ler quando l n-1 caracteres ou o caractere LF ('\r'), (o que vier primeiro).
O caractere LF includo na string. O caractere nulo anexado ao final da string para marcar seu final.
Em caso de xito, a funo retorna s. Em caso de erro ou fim do arquivo, retorna NULL.
ARQUIVOS TEXTO
A funo fputs()
A funo fputs() o complemento de fgets(). Ela escreve uma seqncia de caracteres no arquivo. Sua sintaxe :
char* fputs(char* s, FILE* f);
A funo recebe como argumentos uma string e um ponteiro para FILE. O valor retornado o ltimo caractere fornecido. Em caso de erro, a funo retorna EOF. Note que a funo copia a string fornecida tal como ela para o arquivo. Se no existir a string, no inserido o caractere de nova linha (LF) nem o caractere nulo.
ARQUIVOS TEXTO
O programa a seguir l dados de um ficheiro, executa um processamento com os dados lidos e grava os resultados em outro arquivo, em forma de um relatrio de sada.
As sintaxes de fprintf() e fscanf() so semelhantes s sintaxes de printf() e scanf() excepto pela incluso do primeiro argumento, que um ponteiro para a estrutura FILE.
ARQUIVOS TEXTO
As funes fprintf() e fscanf()
Para leitura e gravao de arquivos com formatao, so utilizadas as funes fprintf() e fscanf(). Estas funes so semelhantes a printf() e scanf(), utilizadas ao longo do curso.
ARQUIVOS BINRIOS
Os dados so armazenados em arquivos binrios da mesma forma que so armazenados na memria do computador. Ou seja, ao guardarmos o valor de uma varivel float num arquivo binrio, ela ocupa no arquivo os mesmos 4 bytes que ocupa na memria. Arquivos guardados em modo binrio no so facilmente entendidos por uma pessoa que o esteja lendo. Em compensao, para um programa muito fcil interpretar este arquivo. Ao guardarmos valores em modo texto, o compilador converte o valor da varivel para uma forma de apresentlo atravs de caracteres. Por exemplo, o nmero inteiro 20000, apesar de ocupar somente dois bytes na memria, para ser armazenado em um arquivo texto ocupa pelo menos cinco bytes, j que cada caractere ocupa um byte.
ARQUIVOS BINRIOS
Arquivos binrios normalmente so menores que arquivos texto, contendo a mesma informao. A velocidade de leitura do arquivo tambm consideravelmente reduzida ao utilizarmos arquivos binrios. Em compensao, a visualizao do arquivo no traz nenhuma informao ao usurio, pelo fato de serem visualizados os caracteres correspondentes aos bytes armazenados na memria. No caso de variveis char, a visualizao idntica em arquivos texto e binrios.
Ao executar este programa, ele gera um arquivo binrio, binario.bin. Se voc tentar visualizar este arquivo num editor como o Bloco de Notas, do Windows, conseguir distinguir os 20 primeiros bytes, que o vetor de caracteres. A partir da, os bytes utilizados pelo compilador para armazenar os valores inteiros no fazem mais sentido quando visualizados..
Para voltar a colocar o ponteiro a apontar para o inicio do arquivo temos a funo:
void rewind(FILE *arq)