Академический Документы
Профессиональный Документы
Культура Документы
Ficheiros em C
A biblioteca com todas as funes necessrias para manusear
ficheiros a stdio.h
Em C, um pouco como nas outras linguagens, existem funes
para:
Manusear ficheiros de texto Manusear ficheiros binrios
Tcnicas de Programao
funo fclose. Tem que existe sempre um ponteiro para acedermos ao ficheiro (FILE *fp) Se no nome do ficheiro colocarmos dados.txt estamos a trabalhar no directoria actual, ou com caminhos relativos Se indicarmos o caminho completo para o ficheiro c:\\pasta\\dados.txt estamos a trabalhar com caminhos absolutos
Ateno s duas barras \\
fopen
O primeiro parmetro do fopen uma string para a localizao do
ficheiro:
existir a funo devolve NULL w abre para escrita, se o ficheiro no existir, cria-o, seno apaga o seu contedo a abre para escrita, se o ficheiro no existir, cria-o, seno fica a apontar para o fim do ficheiro r+ - abre para leitura e escrita, ficando com o mesmo comportamento do r w+ - abre para escrita e leitura, ficando com o mesmo comportamento do w a+ - abre para escrita e leitura, ficando com o mesmo comportamento do a
caracter. recomendado, quando se escreve em ficheiros, usar a funo fflush, para gravar alguma informao que possa estar em buffer antes de fechar o ficheiro. Existe ainda a funo feof, que permite saber se chegamos ao fim do ficheiro ou no
Escrita formatada
#include <stdio.h> int main() { char *str1 = "c:\\dados.txt"; FILE *fp; fp=fopen (str1,"w"); if (fp) { fprintf(fp, "%d",123); // escreve um inteiro fprintf(fp, "%f", 10.54); // um float fprintf(fp, "%c", 'b'); // um char fprintf(fp, "%d %f %c", 12, 3.12, 'a'); // e muitas coisas } fflush(fp); fclose(fp); return 0; }
sendo necessrio acrescentar o ponteiro para o ficheiro Existe ainda a funo fputs:
fputs(ola mundo, fp);
Leitura formatada
#include <stdio.h> int main() { char *str1 = "c:\\dados.txt"; FILE *fp; int i; float f; char c; fp=fopen (str1,"r"); if (fp) { fscanf(fp, "%d",&i); // Le um inteiro printf("%d", i); fscanf(fp, "%f", &f); // um float printf("%f", f); fscanf(fp, "%c", &c); // um float printf("%f", f); fscanf(fp, "%d %f %c", &i, &f, &c); // e muitas coisas printf("%d %f %c", i, f, c); } fclose(fp); return 0; }
Tcnicas de Programao
funo fclose. Tem que existe sempre um ponteiro para acedermos ao ficheiro (FILE *fp) Se no nome do ficheiro colocarmos dados.txt estamos a trabalhar no directoria actual, ou com caminhos relativos Se indicarmos o caminho completo para o ficheiro c:\\pasta\\dados.txt estamos a trabalhar com caminhos absolutos
Ateno s duas barras \\
fopen
No segundo parmetro indica o modo de abertura binario
rb abre para leitura, ficando a apontar para o inicio do
ficheiro, se este no existir a funo devolve NULL wb abre para escrita, se o ficheiro no existir, cria-o, seno apaga o seu contedo ab abre para escrita, se o ficheiro no existir, cria-o, seno fica a apontar para o fim do ficheiro rb+ - abre para leitura e escrita, ficando com o mesmo comportamento do r wb+ - abre para escrita e leitura, ficando com o mesmo comportamento do w ab+ - abre para escrita e leitura, ficando com o mesmo comportamento do a
A funo fwrite, permite escrever um conjunto de bytes num ficheiro. O 1 parmetro a informao O 2 parmetro o numero de bytes que se vai escrever O 3 parmetro a quantidade de vezes que se vai escrever
A funo fread semelhante fwrite, s que l em vez de escrever O 1 parmetro a informao O 2 parmetro o numero de bytes que se vai ler O 3 parmetro a quantidade de vezes que se vai ler O 4 parmetro o ponteiro para o ficheiro.
Tcnicas de Programao
Posicionamento em ficheiros
A funo ftell permite saber em que posio estamos: long pos = ftell(fp);
ficheiro fseek(fp, 4, SEEK_CUR): // Avana 4 bytes a partir da posio actual fseek(fp, -4, SEEK_CUR): // Recua 4 bytes a partir da posio actual fseek(fp, -4, SEEK_END): // Recua 4 bytes a partir do fim do ficheiro
fseek(fp, -4, SEEK_SET); // No faz sentido fseek(fp, 4, SEEK_END); // No faz sentido