Operando Com Arquivos
Autor: Ruan Lopes | Publicado: 2010-10-28T09:11:00-07:00

Em muitas situações ao se codificar programas, o tamanho da entrada e/ou da saída de um programa pode ser relativamente grande, inviabilizando que ambas estejam visualizadas no terminal (tela). Logo, C permite que tanto a entrada quanto a saída também sejam um arquivo, facilitando assim passar os dados para o programa e recebendo a resposta de uma maneira mais organizada.Primeiramente, deve-se saber que as funções relativas à arquivo estão já na biblioteca stdio.h (IO = Input/Output = Entrada/Saída). Porém, também precisaremos da stdlib.h, pois será necessário utilizar uma função desta biblioteca que tratará o erro relativo ao caso do arquivo a ser usado no programa não existir ou não haver memória suficiente para criá-lo.OK, agora irei explicar aqui os passos para se trabalhar com arquivos em C:1-> Declarar uma variável do tipo arquivo (uma variável para cada arquivo a ser utilizado). Como a declaração de variáveis de tipo int, float, double e char, ela também deve ser feita no início de uma função....FILE * arquivo;...Como vocês devem lembrar o * indica que a variável é um ponteiro. Ela aponta para o arquivo na memória do computador.2-> Uma vez declarada, agora você deve associar esta variável a um arquivo existente ou a um arquivo a ser criado, chamando a função fopen (chamamos esta ação também de abrir o arquivo). O primeiro parâmetro desta função é o nome do arquivo (em PROG iremos apenas trabalhar com arquivos .txt), e em seguida o modo em que este arquivo será trabalho. Não se deve esquecer de fazer o tratamento de erro citado anteriormente. Ele é feito com o comando exit(1); que aborta o programa imediatamente e fecha todos os arquivos que tenham sido abertos.exemplo:arquivo = fopen("entrada.txt", "r");if ( arquivo == NULL ){     printf("Erro na abertura do arquivo!\n");     exit(1);}Repare que se a função fopen não conseguir abrir o determinado arquivo ela retorna NULL para a variável arquivo.Em PROG, só usaremos dois modos, "r" para leitura de arquivo e "w" para gravação de arquivo.3-> Agora iremos ver como manipular este arquivo. Caso você esteja lendo arquivo, para ler as informações contidas nele, a função fscanf deve ser chamada. É praticamente idêntica à função scanf, a única informação a mais a ser passada é o nome da variável onde você armazenou o retorno da fopen (que seria o arquivo aberto). A fscanf também retorna a quantidade de dados lidos com sucesso a cada execução:exemplo:para ler do arquivo os dados1  2  34  5  6faz-se:while ( fscanf( arquivo, "%d%d%d", &amp;a,&amp;b,&amp;c) == 3 ){    "operações a serem feitas com os valores lidos"}Traduzindo: "Enquanto forem lidos 3 valores por linha do arquivo, fazer..."É importante ver que para o mesmo arquivo é válido fazer:while(fscanf( arquivo, "%d", &amp;a)==1){    "operações a serem feitas com o valor lido"}Quantos valores você vai ler por vez no fscanf depende unicamente do seu objetivo e é importante observar que ele separa os valores por 'caracteres brancos' que seriam tablações, espaços e quebras de linha.Agora para imprimir, usamos a função fprintf, que também é análoga à função printf, sendo que também precisamos informar a variável do arquivo em que os dados serão escritos:exemplo:fprintf(arquivo,"%d\t%d\t%d", a,b,c);4-> Finalmente, quando todas as operações em cima do arquivo forem completas, o arquivo, tendo sido aberto, agora precisa ser fechado. Para isto basta utilizar a função fclose, passando como parâmetro a variável do arquivo:fclose(arquivo);Quando o seu programa termina os arquivos são fechados automaticamente, mas para programas grandes e que ficarão executando por algum tempo, como um sistema operacional, é primordial que o fclose seja feito. Ainda assim, a boa prática de programação é sempre dar fclose nos seus arquivos. Se isso não te convence... você pode perder pontos na prova por esquecer um fclose.É isso, espero ter ajudado! Bons estudos e até a próxima!Por André Calfa