Você está na página 1de 5

Manipulao de Ficheiros em C Resumo de funes

fopen
Funo para abrir um ficheiro de texto ou um ficheiro binrio. Prottipo: FILE *fopen (char *nome_do_ficheiro,char *modo); O primeiro parmetro "*nome_do_ficheiro": o local onde o ficheiro se encontra ou se for criado, onde o ficheiro deve ser armazenado. O segundo parmetro "*modo": especifica como o ficheiro deve ser aberto. A tabela seguinte mostra os modos possveis: r w a rb wb ab r+ w+ a+ r+b w+b a+b Abrir um ficheiro de texto apenas para leitura. O ficheiro de texto deve existir antes de ser aberto. Abrir um ficheiro de texto para escrita. Se o ficheiro de texto no existir, ele ser criado. Se j existir, o contedo anterior ser destrudo. Abrir um ficheiro de texto para escrita. Os dados sero adicionados no fim do ficheiro de texto ("append"), se ele j existir, ou um novo ficheiro de texto ser criado, no caso de ficheiro de texto no existente anteriormente. Abre um ficheiro binrio apenas para leitura. Igual ao modo "r" anterior, s que o ficheiro binrio. Cria um ficheiro binrio para escrita, como no modo "w" anterior, s que o ficheiro binrio. Acrescenta dados binrios no fim do ficheiro, como no modo "a" anterior, s que o ficheiro binrio. Abre um ficheiro de texto para leitura e escrita. O ficheiro de texto deve existir e pode ser modificado. Cria um ficheiro de texto para leitura e gravao. Se o ficheiro de texto existir, o contedo anterior ser destrudo. Se no existir, ser criado. Abre um ficheiro de texto para escrita e leitura. Os dados sero adicionados no fim do ficheiro de texto se ele j existir, ou um novo ficheiro de texto ser criado, no caso de ficheiro de texto no existente anteriormente. Abre um ficheiro binrio para leitura e escrita. O mesmo que "r+" acima, s que o ficheiro binrio. Cria um ficheiro binrio para leitura e escrita. O mesmo que "w+" acima, s que o ficheiro binrio. Acrescenta dados ou cria um ficheiro binrio para leitura e escrita. O mesmo que "a+" acima, s que o ficheiro binrio.

Exemplos: */ abrir para leitura o ficheiro de texto com o nome arquivo.txt */ FILE *ficheiro; fopen(arquivo.txt, r); */ abrir para escrita o ficheiro binrio com o nome dados.dat */ FILE *ficheiro; fopen(dados.dat, wb); */ abrir para leitura e escrita o ficheiro binrio com o nome dados.dat */ FILE *ficheiro; fopen(dados.dat, r+b); 1

Manipulao de Ficheiros em C Resumo de funes

fclose
Prottipo: int fclose (FILE *fp); O apontador fp passado funo fclose() que determina o ficheiro a ser fechado. A funo retorna zero no caso de sucesso. Exemplo: FILE *ficheiro; fopen(arquivo.txt, r); fclose(ficheiro);

Testar o sucesso de abertura de um Ficheiro


bastante importante saber o que aconteceu quando tentamos abrir um ficheiro. Ele pode no existir e nesse caso a varivel de ficheiro recebe o valor NULL. Exemplo 1: if( fp == NULL) printf ("Erro na abertura do ficheiro."); else printf("Ficheiro aberto com sucesso."); Exemplo 2: if (!fp) printf ("Erro na abertura do ficheiro."); else printf("Ficheiro aberto com sucesso.");

putc
Escreve um carater no ficheiro. Prottipo: int putc (int ch,FILE *fp); Parmetro 1: "int ch" - carater a ser escrito no ficheiro (pode ser uma varivel). Parmetro 2: "FILE *fp" - o ficheiro a ser escrito. Exemplo: FILE *ficheiro; fopen(arquivo.txt, r); putc(a, ficheiro); putc(X, ficheiro); char carater = b; putc(carater, ficheiro);

getc
Retorna um carater lido do ficheiro. Prottipo: int getc (FILE *fp); Parmetro: "FILE *fp" - o ficheiro a ser lido. FILE *ficheiro; char c; fopen(arquivo.txt, r); c=getc(ficheiro); 2 Exemplo:

Manipulao de Ficheiros em C Resumo de funes

feof
EOF ("End of file") - indica o fim de um ficheiro. Por vezes necessrio verificar se um ficheiro chegou ao fim, para isto podemos usar a funo feof(). A funo retorna um valor diferente de zero se o ficheiro chegou ao EOF, caso contrrio retorna zero. Prottipo: int feof (FILE *fp); Parmetro: "FILE *fp" - o ficheiro a ser verificado. FILE *ficheiro; while (!feof(ficheiro) { } Exemplo:

fprintf
Escreve uma constante de carateres num ficheiro. Esta funo funciona como o printf, sendo que a diferena a sada padro, que no fprintf um ficheiro e no printf o monitor. Prottipo: int fprintf (FILE *fp, const char *format,...); Parmetro 1: "FILE *fp" - o ficheiro a ser escrito. Parmetro 2: "const char *format" - o que ser escrito. Exemplo: FILE * fp; fp = fopen ("ficheiro.txt", "w+"); fprintf(fp, "%s %s %s %d", "Bom", "ano", "novo", 2013);

fscanf
L uma constante de carateres de um ficheiro. Esta funo funciona como o scanf, sendo que a diferena a entrada padro, que no fscanf um ficheiro e no scanf o teclado. Prottipo: int fscanf (FILE *fp, const char *format,...); Parmetro 1: "FILE *fp" - o ficheiro a ser lido. Parmetro 2: "const char *format" - qual a varivel que receber os dados do ficheiro. Exemplo: FILE * fp; fp = fopen ("ficheiro.txt", "w+"); char str1[10], str2[10], str3[10]; int ano; fscanf(fp, "%s %s %s %d", str1, str2, str3, &ano);

fgets
L uma string de um ficheiro. A funo l a string at que um carater de nova linha seja lido (\n) ou tamanho-1 carateres tenham sido lidos. Se o carater de nova linha for lido, ele far 3

Manipulao de Ficheiros em C Resumo de funes parte da string, o que no acontecia com a funo gets. A string resultante sempre terminar com \0 (por isto somente tamanho-1 carateres, no mximo, sero lidos). Prottipo: char *fgets (char *str, int tamanho, FILE *fp); Parmetro 1 "char *str": a varivel que receber a string. Parmetro 2 "int tamanho": o limite mximo de carateres a serem lidos. Parmetro 3 "FILE *fp": o ficheiro que ser lido.

Exemplo: FILE * fp; fp = fopen ("ficheiro.txt", "r+"); char str[60]; if( fgets (str, 60, fp)!=NULL ) { printf(str); }

fputs
Escreve uma string num ficheiro. Prottipo: char *fputs (char *str, FILE *fp); Parmetro 1: "char *str" - a varivel que contm os dados a serem escritos no ficheiro. Parmetro 2: "FILE *fp" - o ficheiro a ser escrito.

Exemplo: FILE * fp; fp = fopen ("ficheiro.txt", "r"); fputs("Este eh um programa em C.", fp);

fread
Leitura de bloco de dados em ficheiro binrios. Prottipo: unsigned fread (void *buffer, int numero_de_bytes, int count, FILE *fp); Parmetro 1: "void *buffer" - varivel na qual sero armazenados os dados lidos. Parmetro 2: "int numero_de_bytes" - o nmero de bytes a ser lido. Parmetro 3: "int count" - indica quantas unidades devem ser lidas. Parmetro 4: "FILE *fp" - ficheiro a ser lido.

Exemplos: FILE *arquivo; char nome[5]; int idade; fread(&nome, sizeof(nome), 1, arquivo); fread(&idade, sizeof(int), 1, arquivo);

fwrite
Leitura de bloco de dados em ficheiro binrios. 4

Manipulao de Ficheiros em C Resumo de funes Prottipo: unsigned fwrite (void *buffer, int numero_de_bytes, int count, FILE *fp); Parmetro 1: "void *buffer" - varivel na qual sero transmitidos os dados ao ficheiro. Parmetro 2: "int numero_de_bytes" - o nmero de bytes a ser escrito. Parmetro 3: "int count" - indica quantas unidades devem ser escritas. Parmetro 4: "FILE *fp" - ficheiro a ser escrito.

fseek
Utiliza-se para procura e acesso randmico (direto) em Ficheiros. Esta funo desloca a posio corrente de leitura ou escrita no ficheiro de um valor especificado, a partir de um ponto especificado. Prottipo: int fseek (FILE *fp, long numbytes, int origem); Parmetro 1: "FILE *fp" - ficheiro a ser manipulado. Parmetro 2: "long numbytes" - indica quantos bytes o cursor de posio do ficheiro ser movimentado a partir da sua posio atual. Parmetro 3: "int origem" - indica a partir de onde os numbytes sero contados.

Abaixo uma tabela com os possveis valores: Nome SEEK_SET SEEK_CUR SEEK_END Exemplo: FILE *fp; fp = fopen("file.dat","w+"); fseek( fp, 7, SEEK_SET ); // avana 7 bytes desde o inicio do ficheiro fseek( fp, -7, SEEK_END ); // recua 7 bytes desde o fim do ficheiro fseek( fp, sizeof(int), SEEK_CUR ); /* avana o tamanho definido para um tipo inteiro desde o posio atual do ficheiro */ fclose(fp); Nota: quando estamos a usar ficheiros binrios conveniente usar a funo sizeof() para determinar o tamanho do tipo de dados. Valor 0 1 2 Significado Incio do ficheiro Posio atual no ficheiro Fim do ficheiro

rewind
Retorna a posio atual do ficheiro para o incio. Prottipo: void rewind (FILE *fp); Parmetro: "FILE *fp" - ficheiro a ser manipulado.

Exemplo: FILE *fp; rewind(fp); 5