Gravar no arquivo em C

Jinku Hu 12 outubro 2023
  1. Use a função fwrite para escrever no arquivo em C
  2. Use a função write para escrever no arquivo em C
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);
}
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artigo relacionado - C File