Organização De Arquivos Em C
Monografias: Organização De Arquivos Em C. Pesquise 862.000+ trabalhos acadêmicosPor: Leonardo_Larocca • 2/4/2014 • 969 Palavras (4 Páginas) • 246 Visualizações
• Organização de Arquivos em C
O sistema de E/S de C utiliza o conceito de streams e arquivos. Uma stream é um dispositivo lógico que representa um arquivo ou dispositivo. A stream é independente do arquivo ou dispositivo. Devido a isso, a função que manipula uma stream pode escrever tanto em um arquivo no disco quanto em algum outro dispositivo, como o monitor.
Existem dois tipos de streams: de texto e binária.
Em uma stream de texto podem ocorrer certas traduções de acordo com o sistema hospedeiro. Por exemplo, um caractere de nova linha pode ser convertido para os caracteres retorno de carro e alimentação de linha. Devido a isso pode não haver uma correspondência entre os caracteres da stream e do dispositivo externo; a quantidade de caracteres pode não ser a mesma.
A stream binária é uma sequência de bytes com uma correspondência de um para um com os bytes encontrados no dispositivo externo, isto é, não ocorre nenhuma tradução de caracteres. O número de bytes é o mesmo do dispositivo.
Um arquivo é interpretado pela linguagem C como qualquer dispositivo, desde um arquivo em disco até um terminal ou uma impressora. Para utilizar um arquivo você deve associá-lo a uma stream e, então, manipular a stream. Você associa um arquivo a uma stream através de uma operação de abertura.
Nem todos os arquivos tem os mesmos recursos. Por exemplo, um arquivo em disco pode suportar acesso aleatório enquanto um teclado não.
Trabalhar com arquivos consiste em 3 etapas, são elas:
1. Abrir o arquivo;
2. Ler e/ou gravar informações desejadas no arquivo;
3. Fechar o arquivo;
1. Abrindo Arquivos
Em C, para poder trabalhar em um arquivo, precisamos abri-lo, associando-o a uma variável interna do programa. Para isso, usamos variáveis do tipo FILE*, que pode ser declaradas da seguinte forma:
FILE* entrada;
FILE* saída;
O nome das variáveis é interno ao programa, de modo que poderíamos ter escolhido aleatoriamente, independentemente do nome do arquivo que fôssemos trabalhar.
A associação a variável ainda não foi feita, para isso utilizamos uma função, FOPEN, que funciona da seguinte maneira:
Entrada = FOPEN (“arquivo_entrada.txt”,”r”);
Saida = FOPEN (“arquivo_saida”,”w”);
Essa função precisa de dois parâmetros, dos quais o primeiro é o mais obvio: nome de arquivo. O segundo parâmetro diz ao computador o que pretendemos fazer com o arquivo: gravar (“w”, de write), ou ler dados (“r”, de read). No final, se tudo estiver certo, essa variáveis conterão um tipo de referência aos arquivos que abrimos. São essa variáveis que iremos usar quando formos ler ou gravar os nossos dados. Se houver um arquivo com o mesmo nome, o mesmo será apagado, e o que você gravar ficará no lugar do antigo, caso contrário o programa criará um arquivo novo, com o nome que você pediu, se você desejar apenas adicionar dados ao final do arquivo usar no lugar da letra w, a letra a (de append).
2. Lendo e gravando arquivos.
Para ler arquivos existe a função FSCANF, e especificamos (da mesma maneira que com a FPRINT) o arquivo que queremos usar, por exemplo:
Int n1, n2;
...
FSCANF (entrada, %d %d, &n1, &n2);
Deve ser ter cuidado ao usar o formato de leitura %c, usado para caracteres. O que ocorre é que o C não faz nenhuma distinção entre os tipos de caracteres quando esse formato é usado.
Char c;
...
FSCANF (entrada, “%c”, &c);
Similarmente, se você quiser ler dois caracteres separados por espaços, você deve usar o formato “ %c, &c”.
Pra gravar dados usamos a função FPRINTF, você deve especificar o arquivo no qual as coisas dever ser escritas, más sem dizer o nome do arquivo, somente a variável a qual você associou o arquivo há pouco, veja exemplos:
FPRINTF (saída, “Bom dia!\n”);
FPRINTF (saída, “Resultado> %d\n”, resultado);
FPRINTF (saída, soma = %10.6f quociente = %10.6\n”, soma, quociente);
3. Fechando Arquivos
Finalmente, depois que você terminou, é necessário fechar os arquivos que você abriu. O fechamento de arquivo serve, basicamente, para liberar a memória que foi utilizada para trabalhar com o arquivo, além de desbloquear o arquivo para uso em outros programas. Esta tarefa é bem simples (deve ser executada para cada arquivo que foi aberto):
FCLOSE (entrada);
FCLOSE (saída);
Note que não deve-se tentar fechar um arquivo que sequer foi aberto, ou seja, se você constatou que ocorreu um problema (a tal da comparação com NULL).
Apagando um arquivo
Para apagar uma arquivo use a função remove( ). Ela faz parte de stdio.h e sua sintaxe é:
remove(ARQUIVO);
sendo ARQUIVO um ponteiro de arquivo.
Exemplo:
/* Apagando um arquivo */
#include <stdio.h>
#include <ctype.h>
int main(int argc,char *argv[])
{
FILE * arquivo;
char opcao[5];
if(argc != 2)
{
printf("Erro !!! \n");
printf("Sintaxe correta: apagar
...