Manuseio de arquivos em C: um guia para iniciantes
Os programas geralmente precisam de uma estrutura de dados para armazenar os dados de que podem precisar durante a execução. Normalmente, esses dados são armazenados em variáveis ou matrizes. O problema com isso é que ele se perde assim que o programa termina a execução. Isso ocorre porque eles são locais de memória temporários.
Se você precisava que seus dados estivessem acessíveis mesmo depois de executar um programa, você teria que salvá-los em um arquivo. Os arquivos podem ser de texto ou binários.
Este artigo se concentra em como você pode gerenciar arquivos de texto em C. Aqui está o que você precisa saber.
Abrindo um arquivo
Primeiro, é importante saber que você deve sempre declarar um ponteiro do tipo FILE ao trabalhar com arquivos. Este ponteiro é necessário para permitir a comunicação entre o arquivo e o programa.
FILE *filePtr;
Para poder escrever, ler ou atualizar um arquivo, você precisa primeiro abri-lo. C fornece a função de biblioteca padrão fopen () para fazer isso.
Esta função aceita dois argumentos de string: o nome do arquivo e o modo. Se o arquivo que você está abrindo não estiver localizado no diretório do programa em que você está, forneça o caminho do arquivo em vez de apenas usar o nome do arquivo.
Observe a sintaxe abaixo sobre como usar fopen () :
filePtr = fopen("filename.txt", "mode");
A variável filePtr é um ponteiro do tipo FILE . O modo de argumento refere-se à maneira como o arquivo deve ser aberto. Ou seja, quais funções devem ser executadas no arquivo.
Existem três modos nos quais você pode abrir um arquivo em C. Esses modos são r, w e a . Para ler um arquivo, use r . Para gravar em um arquivo, use w . Para acrescentar dados ao final de um arquivo, use a .
Por exemplo, se você planeja ler o conteúdo de um arquivo chamado programming.txt , deverá usar a instrução abaixo:
filePtr = fopen("programming.txt" , "r");
Além de r, w e a , existem outros modos estendidos. Abaixo está uma discussão sobre esses modos para arquivos de texto:
r + e w + : Ambos os modos são usados para abrir um arquivo para leitura e gravação. A diferença é que r + faz com que fopen () retorne NULL se o arquivo não existir, enquanto w + cria o arquivo. Outra coisa a notar é que w + sobrescreve um arquivo se ele existir.
a + : Este modo é usado para abrir um arquivo para anexar e ler. Se o arquivo não existir, ele será criado.
Escrita e Leitura
Você pode usar as funções fprintf e fscanf respectivamente, para escrever e ler em um arquivo. Essas duas funções são comparáveis em funcionalidade às funções printf e scanf no I / O básico.
#include <stdio.h>
int main(void){
// pointer declaration
FILE *filePtr;
filePtr = fopen("myfile.txt", "w");
//the message below will be written to myfile.txt
fprintf(filePtr, "%s", "Files are permanent memory locations.");
}
O código acima mostra como você pode criar um arquivo chamado myfile.txt e armazenar uma mensagem nele. Para ler o conteúdo do arquivo recém-criado, consulte o código abaixo.
#include <stdio.h>
#include <stdlib.h>
int main(void){
char message[196];
FILE *filePtr;
filePtr = fopen("myfile.txt", "r");
if (filePtr == NULL){
printf("Error opening the file");
//program exists if the pointer returns NULL
exit(1);
}
fscanf(filePtr,"%s", &message);
printf("The message is: %s", message);
fclose(filePtr);
}
Quando você compila e executa o código acima, sua saída será Arquivos. Você notará que esta não é a mensagem completa armazenada em myfile.txt . Não se preocupe. Este não é um bug no código.
Quando o programa encontra um espaço, ele para de ler o conteúdo do arquivo. Se, em vez disso, a mensagem fosse escrita como Arquivos-são-locais-de-memória-permanentes, você obteria toda a saída em sua tela.
Em ambos os exemplos de código fornecidos, você deve ter notado a instrução fclose () . Você deve sempre fechar um arquivo (texto ou binário) após usá-lo.
Uma olhada na programação C ++
Tendo atingido esse nível de manipulação de arquivos em C, você provavelmente é um usuário acima da média no idioma. Isso também significa que você deve procurar maneiras mais eficientes de programação.
C ++ é a resposta. É a versão orientada a objetos de C. Agora você deve estar dobrando as mangas para aprender essa linguagem de tendência.