Obs: Esse post será "revisitado" em breve.
Porque usar arquivos?
- Armazenar de maneira persistente as informações
- Armazenar uma grande quantidade de informações
Tipos de Arquivos:
- Texto
- Binário
Características dos arquivos Texto
- Arquivos seqüenciais
- Arquivos podem ser editados em qualquer editor
- Sua leitura é seqüencia pois deve ser feita do inicio ao fim
Características dos arquivos Binários
- Feita internamente pelo programa que gerou, através de uma seqüencia de bits
- O acesso pode ser feito de forma não seqüencial (randômica)
Como trabalhar com os arquivos em C
- Será necessário utilizar um "tipo" novo de variável, chamado FILE (stdio.h)
- Abrir o arquivo
- Trabalhar com o arquivo (ler/gravar)
- Fechar o arquivo
Um pequeno exemplo de escrita em arquivo texto
#include <stdio.h>
int main (int argc, char * argv[]) {
// cria uma variavel que aponta para o arquivo
FILE *arq;
// abre o arquivo *função fopen*, retorna o endereço do arquivo para a variavel arq
// Modo de abertura -> W
arq = fopen("arquivo.txt","w");
// utiliza a função fprintf, que é como a printf, porem dando saida para um arquivo
fprintf(arq,"Esse é meu primeiro arquivo!\n");
// fechando o arquivo
fclose(arq);
return 0;
}
Um pequeno exemplo de leitura em arquivo texto
#include <stdio.h>
int main (int argc, char * argv[]) {
char c;
// cria uma variavel que aponta para o arquivo
FILE *arq;
// abre o arquivo *função fopen*, retorna o endereço do arquivo para a variavel arq
// modo de abertura -> R
arq = fopen("arquivo.txt","r");
// Pega caracter a caracter (com a funcao fgetc) joga na variavel c e depois imprime
c = fgetc(arq);
while (c != EOF) {
printf("%c", c);
c = fgetc(arq);
}
// fechando o arquivo
fclose(arq);
return 0;
}
Funções
FILE * fopen ( const char * filename, const char * mode );
[link]
Abre um arquivo.
Parâmetros:
filename
Nome do arquivo
mode
modo de abertura do arquivo:
Modos de abertura
r Abre o arquivo para leitura. O arquivo precisa existir
w Abre um arquivo em branco para escrita. Se existir um arquivo com o mesmo nome ele será sobrescrito por um arquivo em branco.
a Abre um arquivo para "atualização". Operações de escrita serão adicionadas no final do arquivo. Se o arquivo não existir, será criado.
r+ Abre o arquivo para leitura e escrita.
w+ Cria um arquivo vazio para leitura e escrita.Se existir um arquivo com o mesmo nome ele será sobrescrito por um arquivo em branco.
a+ Abre um arquivo para leitura e "atualização". Todas as operações de escrita serão feitas no final do arquivo. Se o arquivo não existir, será criado.
OBS: Esses modos de abertura de arquivo são para arquivos textos, porém para proceder a operação em arquivos binários, basta acrescentar a letra b, ficando (rb, wb, ab, rb+, wb+, ab+) (pode-se usar também r+b, w+b, a+b, tendo o mesmo efeito)
Retorno:
Se for bem sucedido, então retorna o ponteiro para o arquivo
Se não, retorna um ponteiro nullo (NULL)
fprintf
int fprintf ( FILE * stream, const char * format, ... );
[link]
Escreve em um arquivo
Parâmetros
stream
Ponteiro para o arquivo
format
Idem as formatações do comando printf (%c %d …)
Argumentos adicionais
Dependendo dos parâmetros de formatação da string, é necessário informar as variáveis que irão preencher as informações
Retorno
Se OK, retorna o numero total de caracteres escritos
Se falha, um numero negativo é retornado
fclose
int fclose ( FILE * stream );
[link]
Fecha o arquivo
Parâmetros
stream
Ponteiro para o arquivo que será fechado
Retorno
Se OK, o arquivo é fechado e o valor 0 é retornado.
Se falha, EOF é retornado

Muito bacana a entrevista de Anders Hejlsberg para a Barbara Fox do Behind the Code, comentando sobre a carreira dessa pessoa que para a área de informática é de extrema importância, afinal, ele é o principal engenheiro por traz de várias coisas: Turbo Pascal, Delphi, Visual J++, WFC (Windows Foundation Classes), C# e participante CHAVE no desenvolvimento do framework .Net.