22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

se pretende manipular está armazenado no arquivo. Isto exige que os registros possuam um campo cujos<br />

valores sejam distintos entre si, sendo o valor deste campo um identificador do referido registro. Esta é a<br />

função de campos do tipo CPF, matrículas, placas de veículos, etc.. Um campo identificador dos registros de<br />

um arquivo é chamado chave.<br />

Criando um arquivo de registros<br />

Um arquivo é criado através da função fopen(), que possui dois parâmetros do tipo string e retorna um<br />

ponteiro para uma estrutura pré-definida FILE (um ponteiro que aponta para uma estrutura FILE é chamado<br />

ponteiro de arquivo). O primeiro dos parâmetros de fopen() fixa o nome com o qual o arquivo será gravado<br />

no disco e o segundo parâmetro é a string "wb" que indica o formato binário para o arquivo que se está<br />

criando. Se, por alguma razão, o arquivo não for criado, a função fopen() retorna o ponteiro NULL.<br />

Por ex<strong>em</strong>plo, o programa abaixo, cria, no disco da unidade A, um arquivo denominado Teste.arq.<br />

#include <br />

FILE *CriaArquivo(char s[12])<br />

{<br />

FILE *p;<br />

p = fopen(s, "wb");<br />

return(p);<br />

}<br />

main()<br />

{<br />

FILE *PontArquivo;<br />

PontArquivo = CriaArquivo("A:\Teste.arq");<br />

if (PontArquivo != NULL)<br />

printf("Arquivo Teste.arq criado como sucesso");<br />

else<br />

printf("O arquivo Teste.arq não foi criado");<br />

}<br />

A função fopen(), além de criar um arquivo gravado no disco associa, através do que ela retorna, um<br />

ponteiro para o arquivo referido. Este ponteiro é utilizado para se referenciar o tal arquivo no restante do<br />

programa e é chamado fluxo. É o caso do ponteiro de arquivo PontArquivo do ex<strong>em</strong>plo anterior. Qualquer<br />

referência a ele será uma referência ao arquivo Teste.arq.<br />

A criação de um arquivo com a ativação de fopen(NomeArquivo, "wb") deve ser solicitada com<br />

cautela. Se o arquivo de nome NomeArquivo existir, a chamada referida "apagará" todo o seu conteúdo. O<br />

tipo de cautela necessária ver<strong>em</strong>os a seguir.<br />

Gravando registros <strong>em</strong> um arquivo<br />

O programa anterior, apenas cria o arquivo no disco não gravando nenhum registro. Se, após a sua<br />

execução, procurarmos com o Windows Explorer o arquivo Teste.arq, encontrá-lo-<strong>em</strong>os com a indicação de<br />

que seu conteúdo t<strong>em</strong> zero bytes. Ou seja é um arquivo vazio. É natural que se crie um arquivo para gravar<br />

registros e isto pode ser feito quando da sua criação.<br />

A gravação de registros <strong>em</strong> um arquivo é feito através da função fwrite() que possui quatro<br />

parâmetros:<br />

1. Um ponteiro r para uma variável do tipo void que receberá o endereço da variável do tipo estrutura<br />

que contém os dados que se quer armazenar;<br />

2. Um inteiro n que receberá o tamanho, <strong>em</strong> bytes, do registro a ser armazenado;<br />

3. Um inteiro q que receberá o número de registros que serão armazenados;<br />

4. Um ponteiro de arquivo p que receberá o fluxo associado através da função fopen() ao arquivo de<br />

disco onde os dados serão armazenados.<br />

Para se criar um arquivo de registros com a estrutura TRegistro definida na seção anterior e, logo <strong>em</strong><br />

seguida, gravar registros no arquivo, teríamos o seguinte programa.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!