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.

Relacionado: Como verificar se duas matrizes são idênticas à programação

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.

Relacionado: Como você encontra o valor ASCII de um caractere?

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.