FILE * fopen (const char * caminho, const char * modo);
Abre o arquivo especificado no caminho, retornando um pointeiro FILE que pode ser utilizado para escrever, ler e efetuar operações em cima desse arquivo.
As operações permitidas dependem do modo utilizado para abrir o arquivo; dependendo do modo, o arquivo pode apenas ser lido, apenas ser escrito ou lido *e* escrito.
O arquivo pode ser fechado chamando a função fclose e passando a ela o ponteiro retornado.
caminho - Cadeia de caracteres contendo o caminho para o arquivo.
modo - Cadeia de caracteres especificando o modo de acesso.
Modos permitidos:
modo |
descrição |
r |
Abre o arquivo em modo leitura. O arquivo deve existir. |
r+ |
Abre o arquivo em modo leitura e atualização, permitindo tanto leitura quanto escrita. O arquivo deve existir. |
w |
Abre o arquivo em modo escrita. Caso o arquivo já exista, ele é sobrescrito, funcionando como se fosse um novo arquivo, vazio. |
w+ |
Abre o arquivo em modo escrita e atualização, permitindo tanto leitura quanto escrita. Caso o arquivo já exista, ele é sobrescrito, funcionando como se fosse um novo arquivo, vazio. |
a+ |
Abre o arquivo em modo anexo e atualização, permitindo tanto leitura quanto escrita. Dados só podem ser anexados ao arquivo, isto é, sempre que uma função de escrita for chamada (fwrite, fputs, ...), os dados são escritos no fim do arquivo, não importando a posição atual. Funções de leitura podem ler qualquer posição, desde que o arquivo seja reposicionado utilizando fseek, fsetpos ou rewind. Caso não exista, o arquivo é criado. |
Modificadores:
modificador |
descrição |
exemplos |
b |
Abre o arquivo em modo binário ao invés de modo texto. Normalmente, este modificador apenas surte efeito na plataforma Windows, sendo ignorado em sistemas *nix. De qualquer forma, utilizar o modo correspondente ao tipo dos dados melhora a portabilidade do programa. |
rb; r+b; rb+ |
x |
Este modificador especifica que, quando o arquivo já existe, a função fopen deve falhar ao invés de sobreescrever o arquivo existente. Esse modificador foi incluído no padrão C2011, não estando disponível em todos os compiladores e ambientes. Ele não surte efeitos em modos de leitura (r), pois a função, quando encontra um arquivo existente, já falha nesses modos. |
wx; wb+x; |
Se o arquivo foi aberto com sucesso, fopen retorna um ponteiro para um objeto FILE, que pode ser utilizado em funções relacionadas para operar em cima do arquivo.
Caso o arquivo não tenha sido aberto com sucesso, a função retorna NULL.
#include <stdio.h>
int main() {
FILE* arquivo = fopen("arquivo.txt", "r");
if(arquivo == NULL) {
fprintf(stderr, "Erro ao abrir o arquivo.txt.");
return 1;
}
fclose(arquivo);
return 0;
}
fclose função