Introdução à linguagem C - Parte IV
Nesta continuação da maravilhosa série sobre a linguagem C, apresentaremos o uso de arquivos textos e binários. Como declará-los? Como abrí-los? Como usá-los? São algumas das perguntas que teremos respondidas aqui!
Parte 2: Abrindo/Fechando arquivos
Quando tratamos de arquivos precisamos saber que antes de tudo precisamos
abri-lo e depois de tudo precisamos fecha-lo. Para isso, existem essas duas
funções que irei explicar.
A função fopen da biblioteca stdio.h retorna uma estrutura com alguns dados sobre o arquivo, mas vamos ignorar isso. O primeiro parâmetro que fopen recebe é o nome do arquivo e o segundo é o modo, ou seja, como ele deve ser aberto.
Os modos possíveis de se usar aqui são:
Outro ponto importante, o "cursor" mencionado não é o do console. Ele é uma espécie de apontador para onde estamos no arquivo. Do mesmo modo, se o cursor estiver no final do arquivo e tentarmos ler algo teremos como retorno EOF.
A função acima é a responsável por fechar um arquivo. A responsabilidade de fechar um arquivo, basicamente, é que ao se fechar o arquivo tudo que estiver no buffer antes será transferido para o arquivo e este será fechado.
Exemplo do que foi tratado até agora seria isso:
FILE *fopen(char *arquivo, char *modo);
A função fopen da biblioteca stdio.h retorna uma estrutura com alguns dados sobre o arquivo, mas vamos ignorar isso. O primeiro parâmetro que fopen recebe é o nome do arquivo e o segundo é o modo, ou seja, como ele deve ser aberto.
Os modos possíveis de se usar aqui são:
- r: abre o arquivo texto para leitura e o cursor é posto no inicio do arquivo.
- r+: abre o arquivo para leitura e escrita. O cursor é posicionado no início do arquivo e o conteúdo anterior é apagado.
- w: limpa o conteúdo do arquivo ou cria um arquivo texto para escrever. O cursor é posicionado no início do arquivo.
- w+: abre o arquivo como leitura e escrita. Se o arquivo já existe ele o sobrescreve, senão ele o criará. O cursor é posicionado no início do arquivo e o conteúdo anterior é descartado.
- a: abre o arquivo para anexação (não perder o conteúdo já inserido). O arquivo é criado se ele não existir. O cursor é posicionado no final do arquivo.
- a+: abre o arquivo para anexação e leitura. O arquivo se não existir é criado. O cursor é posicionado no final do arquivo.
Outro ponto importante, o "cursor" mencionado não é o do console. Ele é uma espécie de apontador para onde estamos no arquivo. Do mesmo modo, se o cursor estiver no final do arquivo e tentarmos ler algo teremos como retorno EOF.
int fclose(FILE *fd);
A função acima é a responsável por fechar um arquivo. A responsabilidade de fechar um arquivo, basicamente, é que ao se fechar o arquivo tudo que estiver no buffer antes será transferido para o arquivo e este será fechado.
Exemplo do que foi tratado até agora seria isso:
#include <stdio.h>
void main(void) {
FILE *fd;
fd=fopen("ABC","a");
fclose(fd);
}
void main(void) {
FILE *fd;
fd=fopen("ABC","a");
fclose(fd);
}
Os comandos mais básicos para se ler/escrever em arquivos são os comandos getc e putc. O getc é usado para se ler os caracteres do arquivo enquanto que putc serve para escrevermos em arquivos, mas infelizmente não tratarei desses arquivos. Vamos falar de algo um pouco mais evoluído...