Descreve como o programador C cria, abre e fecha um arquivo de texto ou arquivo binário.
Um arquivo, significa uma série de bytes, seja um arquivo de texto ou um arquivo binário, a linguagem C, não apenas fornece acesso às funções de nível superior, mas também fornece a chamada subjacente (SO) para processar arquivos no dispositivo de armazenamento . Este capítulo explicará as chamadas importantes no gerenciamento de documentos.
arquivo aberto
Normalmente utilizando a função fopen() para criar um novo arquivo ou abrir um arquivo existente, esta chamada inicializa um objeto do tipo FILE que contém todas as informações necessárias para controlar o fluxo. Aqui está o protótipo desta chamada de função:
FILE *fopen (const char * nome do arquivo, const char * modo);
Aqui filename é uma string para nomear um arquivo, o valor do modo de acesso pode ser um dos seguintes valores:
padrão | descrição |
r | Abra um arquivo de texto existente que permita sua leitura. |
w | Abra um arquivo de texto que permita gravar no arquivo. Se o arquivo não existir, um novo arquivo será criado. Aqui, seu programa grava o conteúdo desde o início do arquivo. Se o arquivo existir, ele será truncado para comprimento zero e reescrito. |
a | Abra um arquivo de texto e grave nele em modo de acréscimo. Se o arquivo não existir, um novo arquivo será criado. Aqui, seu programa anexa conteúdo aos arquivos que você já possui. |
r+ | Abra um arquivo de texto que permita ler e gravar o arquivo. |
w+ | Abra um arquivo de texto que permita ler e gravar o arquivo. Se o arquivo já existir, ele será truncado para comprimento zero e, se não existir, um novo arquivo será criado. |
a+ | Abra um arquivo de texto que permita ler e gravar o arquivo. Se o arquivo não existir, um novo arquivo será criado. A leitura começa no início do arquivo e a gravação ocorre apenas no modo de acréscimo. |
Se for um arquivo binário processado, use o seguinte modo de acesso para substituir o acima:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
arquivo fechado
Para fechar o arquivo, use a função fclose(). O protótipo da função é o seguinte:
int fclose(ARQUIVO *fp);
- Se o arquivo for fechado com sucesso, a função fclose() retornará zero e se o erro retornar EOF. Esta função, na verdade, remove os dados do buffer, fecha o arquivo e libera toda a memória usada para aquele arquivo. EOF é uma constante definida no arquivo de cabeçalho stdio.h
A biblioteca padrão C fornece várias funções para ler e gravar arquivos por caracteres ou como uma string de comprimento fixo.
Escreva no arquivo
Aqui estão as funções mais simples para escrever caracteres no stream:
int fputc ( int c , ARQUIVO *fp );
A função fputc() grava o valor do caractere do parâmetro c no fluxo de saída para o qual o fp aponta. Se as escritas forem bem-sucedidas, ele retornará o caractere escrito e o EOF se ocorrer um erro. Você pode usar a seguinte função para escrever uma string terminando com nulo no stream:
int fputs ( const char *s , FILE *fp );
A função fputs() grava a string s no fluxo de saída para onde o fp aponta. Se a gravação for bem-sucedida, ele retornará um valor não negativo e o EOF se ocorrer um erro. Você também pode usar a função int fprintf (FILE * fp, const char * format,...) para gravar uma string no arquivo. Experimente o seguinte exemplo:
Nota:Certifique-se de ter um diretório tmp disponível e, se ele não existir, você precisará primeiro criá-lo em seu computador.
/tmp geralmente é um diretório temporário no sistema Linux. Se você executar no sistema Windows, será necessário modificá-lo para um diretório existente no ambiente local, como: C:\tmp, D:\tmp, etc.
exemplo vivo
#incluir
Quando o código acima é compilado e executado, ele cria um novo arquivo test.txt no diretório /tmp. E escreve em duas linhas usando duas funções diferentes. Vamos ler este arquivo a seguir.
Leia o arquivo
A seguir está a função mais simples para ler um único caractere de um arquivo:
int fgetc(ARQUIVO*fp);
A função fgetc() lê um caractere do arquivo de entrada para o qual o fp aponta. O valor de retorno é o caractere lido e o EOF se ocorrer um erro. A função a seguir permite ler uma string de um stream:
char *fgets ( char *buf , int n , FILE *fp );
A função fgets() lê n-1 caracteres do fluxo de entrada direcionado por fp. Ele copia a string lida para o buffer buf e acrescenta um caractere nulo no final para encerrar a string.
Se esta função encontrar um caractere de linha quebrada '\ n' ou o EOF do final do arquivo antes de ler o último caractere, então retornará apenas aos caracteres lidos, incluindo quebras de linha. Você também pode usar a função int fscanf (FILE * fp, const char * format,...) para ler a string do arquivo, mas ela para de ler ao encontrar o primeiro espaço e quebra de linha.
exemplo vivo
#incluir
Quando o código acima é compilado e executado, ele lê os arquivos criados na seção anterior, produzindo os seguintes resultados:
1: Este 2: está testando fprintf...
3: Isso está testando fputs...
Primeiro, o método fscanf() só lê This .porque encontra um espaço atrás. Segundo, chame a função fgets() para ler a parte restante até o final da linha. Finalmente, chame fgets() para ler a segunda linha completamente.
Função de E/S binária
As duas funções a seguir são usadas para entrada e saída binária:
size_t fread (void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );
Ambas as funções são de leitura e gravação para blocos de armazenamento – geralmente matrizes ou estruturas.
Acima, sobre a leitura e gravação de arquivos C, pertence à HDV Phoelectron Technology Ltd., uma operação técnica de software. E a empresa para equipamentos relacionados à rede (como: ACONU/ comunicaçãoONU/ inteligenteONU/ fibraONU, etc.) reuniu uma poderosa equipe de software, para que cada cliente personalize as demandas exclusivas que precisam, além de deixar nossos produtos mais inteligentes e avançados.