Aula 20: Ficheiros |
FILE
fopen() fclose() fscanf() fprintf() |
feof()
fputs() fgets() fputc() fgetc() |
FILE *filehandle; |
Com filehandle a
variável
que irá armazenar o ponteiro para a informação.
Isto
NÃO
é igual ao nome do ficheiro, como iremos ver. Esta
declaração
deve ser feita no mesmo local das outras variáveis.
Exemplo:
FILE *f;
Isto cria f um ponteiro para
um handle de ficheiro.
Só a título de curiosidade, não é preciso
saber isto, o tipo de variável FILE está definido como
typedef struct{
short
level;
unsigned
flags;
char
fd;
unsigned char hold;
short
bsize;
unsigned char *buffer, *curp;
unsigned
istemp;
short
token;
} FILE;
Para mais informação, ver a ajuda do compilador.
fopen() |
diminutivo de "file open". Abre um ficheiro. |
definição da função: FILE
*fopen(const char *filename, const char *mode)
abre um ficheiro. Retorna 0 se não for bem sucedida. |
fopen() retorna um ponteiro
para
um FILE (ao qual podemos atribuir a nossa variável do tipo
ponteiro-FILE).
fopen() recebe dois
parâmetros,
ambos strings (pointeiros para char). O primeiro é o nome do
ficheiro
e o segundo é a forma como deve ser aberto, ("r") para leitura,
("w") para escrita, ou ("a") para acrescentar ao final do ficheiro.
Exemplos:
Para abrir um ficheiro chamado "OLA.TXT" para leitura usamos
FILE *f;
f = fopen("OLA.TXT", "r");
Para abrir um ficheiro chamado "output.asc" para escrita usamos
FILE *f;
f = fopen("output.asc", "w");
fscanf() |
diminutivo de "file scan fornatted". input a partir do ficheiro |
definição da função: int
fscanf(FILE *stream, const char *format, ....)
obtém input formatado do ficheiro |
fprintf() |
diminutivo de "file print formatted". Output formatado para o ficheiro |
definição da função: int
fprintf(FILE *stream, const char *format, ...)
o resultado vai para um ficheiro . Retorna o número de caracteres escritos, EOF se falhar. |
De notar que só podemos usar instruções fscanf
para ficheiros que tenham sido previamente abertos para leitura ("r") e
fprintf
é para ser utilizada apenas com ficheiros que tenham sido
abertos
para escrita ("w"). Exemplos:
fprintf(f, "%f", r);
fscanf(f, "%d", opcao);
|
|
|
|
fclose() |
diminutivo de "file close". Fecha um ficheiro. |
definição da função: int
fclose(FILE *stream)
fecha um ficheiro. Retorna 0 se tiver sucesso. |
por exemplo:
fclose(f);
Exemplo:
while (!eof(f))
{
fscanf("%s", s);
}
que irá ler do ficheiro até que
seja encontrado o fim do ficheiro.
código | ecrãn | ficheiro TEST.TXT
depois de correr o programa |
/* With File Output */
#include <stdio.h> FILE *f;
void main()
|
Name of File:
TEST.TXT |
1 Hello
2 Hello 3 Hello 4 Hello 5 Hello 6 Hello 7 Hello 8 Hello 9 Hello 10 Hello |
código | ecrãn | ficheiro TEST.TXT antes
de correr o programa |
/* With File Input */
#include <stdio.h> FILE *f;
void main()
|
Name of File:
TEST.TXT 1 Hello 2 Hello 3 Hello 4 Hello 5 Hello 6 Hello 7 Hello 8 Hello 9 Hello 10 Hello |
1 Hello
2 Hello 3 Hello 4 Hello 5 Hello 6 Hello 7 Hello 8 Hello 9 Hello 10 Hello |
fgets() |
diminutivo de "file get string". Lê uma string do ficheiro. |
definição da função: char
*fgets(char s1, int n, FILE *stream)
lê uma string do ficheiro até eol (end of line), eof (end of file) ou o máximo de n-1 caracteres serem lidos |
fgetc() |
diminutivo de "file get char". Lê um caracter do ficheiro. |
definição da função: int
fgetc(FILE *stream)
lê um único caracter do ficheiro. Retorna o valor do caracter se bem sucedida. |
fputs() |
diminutivo de "file put string". Escreve uma string para o ficheiro. |
definição da função: int
fputs(const char s1, FILE *stream)
escreve uma string para o ficheiro. Retorna 0 se bem sucedida. |
fputc() |
diminutivo de "file pu char". Escreve um caracter para o ficheiro. |
definição da função: int
fputc(char *s1, FILE *stream)
escreve um único caracter para o ficheiro. Retorna o valor do caracter se bem sucedida. |