Descreve como o programador C cria, abre e fecha um arquivo de texto ou um arquivo binário.
Um arquivo, significa uma série de bytes, seja um arquivo de texto ou um arquivo binário, C Language, não apenas fornece o 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.
abrir arquivo
Geralmente 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 permite 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 no arquivo em um 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 permite ler e gravar o arquivo. |
w+ | Abra um arquivo de texto que permite ler e gravar o arquivo.Se o arquivo já existir, o arquivo será truncado para comprimento zero e, se o arquivo não existir, um novo arquivo será criado. |
a+ | Abra um arquivo de texto que permite 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 o arquivo binário for 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, por favor, 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() retorna zero, e se o erro retornar EOF.Essa função, na verdade, remove os dados do buffer, fecha o arquivo e libera toda a memória usada para esse 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 , FILE *fp );
A função fputc () escreve o valor do caractere do parâmetro c no fluxo de saída para o qual o fp aponta.Se as gravações forem bem-sucedidas, ele retorna 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 () escreve a string s no fluxo de saída para onde o fp aponta.Se as gravações forem bem-sucedidas, 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,...) grava uma string no arquivo.Tente o seguinte exemplo:
Nota:Certifique-se de que você tenha um diretório tmp disponível e, se ele não existir, será necessário criá-lo primeiro 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
#incluirint main() { ARQUIVO *fp = NULL;fp = fopen ("/tmp/test.txt", "w+");fprintf (fp, "Isto é um teste para fprintf...\n");fputs ("Isto é um teste para fputs...\n ", fp );fclose (fp);}
Quando o código acima é compilado e executado, ele cria um novo arquivo test.txt no diretório /tmp.E grava 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 seguinte função permite que você leia 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 finalizar 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 para os 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 a quebra de linha.
exemplo vivo
#incluirint main() { ARQUIVO *fp = NULL;lustre de char [255];fp = fopen ("/tmp/test.txt", "r");fscanf(fp, "%s", buff);printf("1:%s\n",buff);fgets (buff, 255, (ARQUIVO *)fp);printf("2:%s\n",buff);fgets (buff, 255, (ARQUIVO *)fp);printf("3:%s\n",buff);fclose (fp);}
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 é um teste para fputs...
Primeiro, o método de fscanf() apenas lê This .porque encontra um espaço atrás.Em segundo lugar, 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 I/O binária
As duas funções a seguir são usadas para a 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 lidas e gravadas para blocos de armazenamento, geralmente matrizes ou estruturas.
Acima, a leitura e gravação de arquivos C pertencem à HDV Phoelectron Technology Ltd., uma operação técnica de software.E a empresa de equipamentos relacionados à rede (como: ACONU/ comunicaçãoONU/ inteligenteONU/ fibraONU, etc.) reuniu uma poderosa equipe de software, para cada cliente personalizar as demandas exclusivas que precisam, também deixar nossos produtos mais inteligentes e avançados.