Arquivos em C
- A capacidade de armazenar e
processar dados em grande quantidade e com velocidade é uma das principais
vantagens dos computadores.
- Estes dados são normalmente
armazenados em arquivos.
- A linguagem C oferece um
conjunto de funções que permitem abrir, ler, gravar e fechar arquivos.
- Utilizando estas funções (ver
tabela abaixo) é possível manter os dados gravados no computador mesmo após a
execução do programa. Isto não seria possível sem tal recurso.
Funções de manipulação de
Arquivos
Função |
Descrição |
fopen(nome, modo) |
Abre o arquivo com o nome especificado usando o modo. Por
exemplo, para o modo "wt" o arquivo será aberto no modo escrita de texto.
Retorna o apontador para o arquivo, que é usado para manipulá-lo. |
fclose(pontArq) |
Fecha o arquivo cujo apontador foi passado como parâmetro. |
fprintf(pontArq, str) |
Escreve no arquivo cujo apontador foi passado a String (str)
passada. |
fgets(str, n, pontArq) |
Faz a leitura do arquivo apontado por pontArq de até n
caracteres, colocando-os no array de caracteres str. A função retorna o
mesmo valor armazenado em str ou NULL quando não conseguir mais ler
caracteres (fim do arquivo). |
Exemplo
1:
gravando um arquivo texto
#include <stdio.h>
main() {
// Declara uma variavel do tipo arquivo
FILE *PontArq;
// Abre o arquivo para escrita "w" no modo texto "t"
PontArq = fopen("Teste.txt", "wt");
// Imprime no arquivo a String passada
fprintf(PontArq, "Arquivo de teste");
// Fecha o arquivo
fclose(PontArq);
}
Exemplo
2: gravando um arquivo HTML
#include <stdio.h>
main()
{
FILE *PontArq;
PontArq = fopen("Teste.htm", "wt");
fprintf(PontArq, "<html>\n");
fprintf(PontArq, "<head><title>Arquivos em C</title></head>\n");
fprintf(PontArq, "<body>\n");
fprintf(PontArq, "<B>Exemplo de arquivo HTML</B>\n");
fprintf(PontArq, "</body>\n");
fprintf(PontArq, "</html>");
fclose(PontArq);
}
Exemplo 3: lendo um arquivo texto
#include <stdio.h>
void ExibeArquivoTexto(char *s) {
// Abre o arquivo para leitura no modo texto
FILE *p = fopen(s, "rt");
// Faz a leitura de cada linha do arquivo e exibe na tela
char Linha[80];
char *Fim = fgets(Linha, 80, p);
while (Fim != NULL) {
printf("%s", Linha);
Fim = fgets(Linha, 80, p);
}
// Fecha o arquivo
fclose(p);
}
main() {
// Obtem o nome do arquivo a ser exibido na tela
char NomeArq[30];
printf("Digite o nome do arquivo: ");
scanf("%s", NomeArq);
// Chama funcao que le o arquivo
ExibeArquivoTexto(NomeArq);
}