Neste guia, aprenderemos como realizar operações de entrada / saída (E / S) em um arquivo usando a linguagem de programação C.
E / S do arquivo C – Índice
1. Abrindo um arquivo
2. Lendo um arquivo
3. Escrevendo um arquivo
4. Fechando um arquivo
5. Lendo e gravando strings em um arquivo
6. Lendo e escrevendo arquivos binários em C
Antes de discutirmos cada operação em detalhes, vamos pegar um programa C simples:
Um programa C simples para abrir, ler e fechar o arquivo
No programa acima, estamos abrindo um arquivo newfile.txt
no modo r
, lendo o conteúdo do arquivo e exibindo no console. permite entender cada operação em detalhes:
Abrindo um arquivo
fopen()
função é usada para abrir um arquivo.
Sintaxe:
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
pode ser qualquer coisa sua escolha.
file_name
é o nome do arquivo que você deseja abrir. Especifique o caminho completo aqui, como “C: \\ meusarquivos \\ newfile.txt”.
Ao abrir um arquivo, você precisa especificar o modo. O modo que usamos para ler um arquivo é “r ”Que é o” modo somente leitura “.
por exemplo:
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
O endereço do primeiro caractere é armazenado em pointer fp
.
Como verificar se o arquivo foi aberto com sucesso?
Se o arquivo não abrir com sucesso, o ponteiro receberá um valor NULL, então você pode escrever a lógica desta :
Este código verificará se o arquivo foi aberto com sucesso ou não. Se o arquivo não abrir, será exibida uma mensagem de erro para o usuário.
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
Vários modos de abertura de arquivo:
O arquivo é aberto usando a função fopen()
, ao abrir você pode usar qualquer um dos seguintes modos de acordo com o requisito.
Modo “r”: É um modo somente leitura, o que significa que se o arquivo for aberto no modo r, não permitirá que você escreva e modifique o conteúdo dele. Quando fopen()
abre um arquivo com sucesso, ele retorna o endereço do primeiro caractere do arquivo, caso contrário, retorna NULL.
Modo “w”: É uma gravação apenas modo. A função fopen()
cria um novo arquivo quando o arquivo especificado não existe e se ele falhar ao abrir o arquivo, ele retornará NULL.
Modo ” a ”: Usando este modo, o conteúdo pode ser anexado ao final de um arquivo existente. Como no modo “w”, fopen()
cria um novo arquivo se ele não existir. Se a abertura não for bem-sucedida, ele retorna NULL.
Ponteiro de arquivo aponta para: último caractere do arquivo .
Modo “r +”: Este modo é igual ao modo “r”; no entanto, você pode realizar várias operações no arquivo aberto neste modo. Você tem permissão para ler, escrever e modificar o conteúdo do arquivo aberto no modo “r +”.
O ponteiro do arquivo aponta para: Primeiro caractere do arquivo.
Modo “w +”: Mesmo que o modo “w” exceto as operações, que podem ser realizadas; o arquivo pode ser lido, escrito e modificado neste modo.
Modo “a +”: Igual ao modo “a”; você pode ler e anexar os dados no arquivo, no entanto, a modificação de conteúdo não é permitida neste modo.
Lendo um arquivo
Para ler o arquivo, devemos abri-lo primeiro usando qualquer do modo, por exemplo, se você quiser apenas ler o arquivo, abra-o no modo “r”. Com base no modo selecionado durante a abertura do arquivo, podemos realizar certas operações no arquivo.
Programa C para ler um arquivo
fgetc (): Esta função lê o caractere da posição atual do ponteiro e, após uma leitura bem-sucedida, move o ponteiro para o próximo caractere no arquivo. Assim que os ponteiros chegarem ao final do arquivo , esta função retorna EOF (Fim do Arquivo). Usamos EOF em nosso programa para determinar o fim do arquivo.
Gravando em um arquivo
Para escrever o arquivo, nós deve abrir o arquivo em um modo que suporte gravação. Por exemplo, se você abrir um arquivo no modo “r”, não poderá gravar o arquivo, pois “r” é o modo somente leitura que permite apenas a leitura.
Exemplo: Programa C para escrever o arquivo
Este programa pede ao usuário para inserir um caractere e escreve esse caractere no final do arquivo. Se o arquivo não existir, este programa criará um arquivo com o nome especificado e gravará o caractere de entrada no arquivo.
Fechando um arquivo
fclose(fp);
A função fclose () é usada para fechar um arquivo aberto. Como argumento, você deve fornecer um ponteiro para o arquivo que deseja fechar.
Um exemplo para mostrar a operação Abrir, ler, gravar e fechar em C
Como ler / gravar (E / S) Strings in Files – fgets & fputs
Aqui, discutiremos como ler e escrever strings em um arquivo.
char *fgets(char *s, int rec_len, FILE *fpr)
s: Matriz de caracteres para armazenar strings.
rec_len: Comprimento do registro de entrada.
fpr: Ponteiro para o arquivo de entrada.
Vamos dar um exemplo:
Exemplo para ler as strings de um arquivo em programação C
No exemplo acima, usamos a função fgets como esta:
fgets(str, 10, fpr)
Aqui str representa a string (matriz de char) na qual você está armazenando a string após lê-la do arquivo.
10 é o comprimento da string que precisa ser lido sempre.
fpr é um ponteiro para o arquivo, que será lido.
Por que usei if (fgets (str, 10, fpr) == NULL como uma lógica para determinar o fim do arquivo?
Nos exemplos acima, usamos ch == EOF para saber o final do arquivo. Aqui usamos esta lógica porque fgets retorna NULL quando não há mais registros disponíveis para serem lidos .
Programa C – Escrevendo string em um arquivo
int fputs ( const char * s, FILE * fpw );
char *s
– Matriz de char.
FILE *fpw
– Ponteiro (do tipo FILE) para o arquivo, que será escrito.
fputs leva dois argumentos –
fputs(str, fpw)
str – str representa a matriz, na qual a string é armazenada.
fpw – Ponteiro FILE para o arquivo de saída, no qual o registro precisa ser escrito.
Aponte para observar sobre fputs:
fputs por padrão não adiciona uma nova linha após escrever cada registro, para fazer isso manualmente – você pode ter a seguinte instrução após cada gravação no arquivo.
fputs("\n", fpw);
C FILE I / O para arquivos binários
Até agora, aprendemos as operações de arquivo em arquivos de texto, e se os arquivos forem binários (como o arquivo .exe). Os programas acima não funcionarão com arquivos binários, no entanto, há uma pequena alteração no tratamento de arquivos binários. A principal diferença é o nome do arquivo & modos. Vamos entender isso com a ajuda de um exemplo. Digamos que eu tenha dois arquivos binários bin1.exe & bin2.exe – desejo copiar o conteúdo de bin1.exe para bin2.exe:
Exemplo: Leitura e gravação de arquivos binários em C
Observação: os modos de abertura de arquivo são “rb” e “wb” em vez de “r” & “w” ..