Gravar no arquivo em C
Este artigo demonstrará vários métodos sobre como gravar em um arquivo em C.
Use a função fwrite
para escrever no arquivo em C
A biblioteca I/O padrão em C fornece funções básicas para ler / escrever os arquivos, nomeadamente fread
e fwrite
. fwrite
leva quatro argumentos, um ponteiro void
de onde os dados devem ser obtidos, tamanho e número de elementos de dados no ponteiro dado e um ponteiro FILE*
para o fluxo do arquivo de saída.
Observe que o fluxo de arquivos deve ser aberto primeiro com a função fopen
, que obtém o nome do arquivo com o modo desejado e retorna FILE*
. Neste caso, usamos o modo w+
para abrir o arquivo para leitura e escrita. Lembre-se, porém, de que se o arquivo não existir, um novo será criado com o nome fornecido. A seguir, verificaremos se o ponteiro do fluxo de arquivo retornado é válido. Caso contrário, ele imprimirá a mensagem de erro correspondente e sairá do programa. Uma vez que o ponteiro do fluxo de arquivo é verificado, então a função fwrite
pode ser chamada. Lembre-se de que você deve fechar o arquivo com a função fclose
antes de encerrar o programa.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char* str = "Temporary string to be written to file!";
int main(void) {
const char* filename = "out.txt";
FILE* output_file = fopen(filename, "w+");
if (!output_file) {
perror("fopen");
exit(EXIT_FAILURE);
}
fwrite(str, 1, strlen(str), output_file);
printf("Done Writing!\n");
fclose(output_file);
exit(EXIT_SUCCESS);
}
Use a função write
para escrever no arquivo em C
Alternativamente, podemos usar write
, que é uma chamada de função compatível com POSIX que grava um determinado número de bytes no arquivo referido pelo descritor de arquivo. Observe que um descritor de arquivo é um número inteiro associado aos fluxos de arquivos abertos. Para recuperar o descritor, devemos chamar a função open
com o caminho do nome do arquivo. A função write
leva o descritor de arquivo como o primeiro argumento e o buffer dos dados apontados por void*
como o segundo. O terceiro argumento é o número de bytes a serem gravados no arquivo, calculado com a função strlen
no exemplo a seguir.
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
const char* str = "Temporary string to be written to file!";
int main(void) {
const char* filename = "out.txt";
int fd = open(filename, O_WRONLY);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
}
write(fd, str, strlen(str));
printf("Done Writing!\n");
close(fd);
exit(EXIT_SUCCESS);
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook