30
Algoritmos e Estruturas de Dados Linguagem Linguagem C C - - Arquivos Arquivos - - Prof. Me. Claudio Benossi [email protected]

Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi [email protected]

Embed Size (px)

Citation preview

Page 1: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Algoritmos e Estruturas de Dados

Linguagem Linguagem CC

- Arquivos - Arquivos --

Prof. Me. Claudio [email protected]

Page 2: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Conceitos iniciaisConceitos iniciaisConceitos iniciaisConceitos iniciais

Um arquivo (file) é uma Um arquivo (file) é uma seqüência de bytes seqüência de bytes que que reside em uma área de armazenamento (Ex: reside em uma área de armazenamento (Ex: disco magnético, flash drive, CD-ROM).disco magnético, flash drive, CD-ROM).

010101010010101010010010101001010100

010101010010101010010010101001010100

Page 3: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Conceitos iniciaisConceitos iniciaisConceitos iniciaisConceitos iniciais

A Linguagem C acessa um arquivo ou qualquer A Linguagem C acessa um arquivo ou qualquer outro dispositivo de entrada e saída através de outro dispositivo de entrada e saída através de um um endereço da memória endereço da memória principal.principal.

ProcessadorProcessadorProcessadorProcessador

BarramentoBarramento

Page 4: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Conceitos iniciaisConceitos iniciaisConceitos iniciaisConceitos iniciais

Portanto, arquivos Portanto, arquivos não são acessados não são acessados diretamente diretamente pelo processador quando ele pelo processador quando ele executa um programa.executa um programa.

Para manipular arquivos, é preciso associá-los a Para manipular arquivos, é preciso associá-los a uma uma streamstream e, então, manipular a stream. e, então, manipular a stream.

A A associaçãoassociação de um arquivo a uma stream é de um arquivo a uma stream é realizada através de uma realizada através de uma operação deoperação de abertura abertura..

A A dissociaçãodissociação é realizada por meio de uma é realizada por meio de uma operação deoperação de fechamento fechamento..

Page 5: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Conceitos iniciaisConceitos iniciaisConceitos iniciaisConceitos iniciais

ProcessadorProcessadorProcessadorProcessador

BarramentoBarramento

01010101001010101001001010100101

01010101001010101001001010100101

AssociaçãoAssociação

ManipulaçãoManipulação

DissociaçãoDissociação

Page 6: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Características dos arquivosCaracterísticas dos arquivosCaracterísticas dos arquivosCaracterísticas dos arquivos

Podem armazenar Podem armazenar grande quantidadegrande quantidade de de informação.informação.

Dados são Dados são persistentespersistentes (gravados em (gravados em disco).disco).

Acesso aos dados pode não ser Acesso aos dados pode não ser seqüencialseqüencial (acesso direto à registro de um banco de (acesso direto à registro de um banco de dados).dados).

Acesso à informação pode ser Acesso à informação pode ser concorrenteconcorrente ((mais de um programa ao mesmo tempo).).

Page 7: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Nomes e extensõesNomes e extensõesNomes e extensõesNomes e extensões

Arquivos são Arquivos são identificadosidentificados por um nome. por um nome.

O nome de um arquivo pode ter uma O nome de um arquivo pode ter uma extensãoextensão que indica o tipo do conteúdo do que indica o tipo do conteúdo do arquivo.arquivo.

arquivo.extarquivo.ext

Page 8: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Tipos de arquivosTipos de arquivosTipos de arquivosTipos de arquivos

Arquivo texto: Arquivo texto: Armazena caracteres que Armazena caracteres que podem ser mostrados diretamente na tela ou podem ser mostrados diretamente na tela ou modificados por editores de texto simples.modificados por editores de texto simples. Exemplos:Exemplos: código C, texto simples, páginas HTML. código C, texto simples, páginas HTML.

Arquivo binário:Arquivo binário: Seqüência de bits sujeita às Seqüência de bits sujeita às convenções dos programas que o gerou, não convenções dos programas que o gerou, não legíveis diretamente.legíveis diretamente. Exemplos:Exemplos: arquivos executáveis ou compactados, arquivos executáveis ou compactados,

documentos do Word.documentos do Word.

Page 9: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Caminhos absolutos ou relativosCaminhos absolutos ou relativosCaminhos absolutos ou relativosCaminhos absolutos ou relativos

O nome de um arquivo pode conter o seu O nome de um arquivo pode conter o seu diretório, ou seja, o diretório, ou seja, o caminhocaminho para encontrar tal para encontrar tal arquivo. arquivo.

Os caminhos podem ser especificados de duas Os caminhos podem ser especificados de duas formas:formas:

Caminho absoluto:Caminho absoluto: descrição desde o diretório raiz. descrição desde o diretório raiz.

Caminho relativo:Caminho relativo: descrição desde o diretório corrente. descrição desde o diretório corrente.

/bin/emacs/bin/emacs/home/usr1/arq.txt/home/usr1/arq.txt/bin/emacs/bin/emacs/home/usr1/arq.txt/home/usr1/arq.txt

arq.txtarq.txtmc102/lab.cmc102/lab.carq.txtarq.txtmc102/lab.cmc102/lab.c

Page 10: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Ponteiro de arquivoPonteiro de arquivoPonteiro de arquivoPonteiro de arquivo

Como já comentado, a associação de um arquivo Como já comentado, a associação de um arquivo a uma stream é realizada pela a uma stream é realizada pela operação de operação de aberturaabertura..

A abertura de um arquivo retorna um A abertura de um arquivo retorna um ponteiro ponteiro especialespecial para o início do arquivo, conhecido como para o início do arquivo, conhecido como ponteiro de arquivoponteiro de arquivo..

Basicamente, o ponteiro de arquivo Basicamente, o ponteiro de arquivo identifica um identifica um arquivo específico arquivo específico em disco e é utilizado pela em disco e é utilizado pela stream associada para stream associada para direcionar as operações direcionar as operações de entrada/saídade entrada/saída (E/S). (E/S).

Page 11: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Ponteiro de arquivoPonteiro de arquivoPonteiro de arquivoPonteiro de arquivo

Um ponteiro de arquivo deve ser Um ponteiro de arquivo deve ser declarado como sendo do tipo declarado como sendo do tipo FILEFILE..

O tipo O tipo FILEFILE está definido na biblioteca está definido na biblioteca stdio.hstdio.h

As funções que manipulam um arquivo As funções que manipulam um arquivo (ex.: escrita, leitura) devem ser realizadas (ex.: escrita, leitura) devem ser realizadas sobre o ponteiro declarado.sobre o ponteiro declarado.

FILE *arq;FILE *arq;

Page 12: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Funções para manipulação de arquivosFunções para manipulação de arquivosFunções para manipulação de arquivosFunções para manipulação de arquivos

FunçãoFunção FinalidadeFinalidade

fopen()fopen() Abre um arquivoAbre um arquivo

fclose()fclose() Fecha um arquivoFecha um arquivo

fputc()fputc() Escreve um caractere em um arquivoEscreve um caractere em um arquivo

fgetc()fgetc() Lê um caractere de um arquivoLê um caractere de um arquivo

fputs()fputs() Escreve uma string em um arquivoEscreve uma string em um arquivo

fgets()fgets() Lê uma string de um arquivoLê uma string de um arquivo

fprintf()fprintf() É para um arquivo o que printf() é para É para um arquivo o que printf() é para o consoleo console

Page 13: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Funções para manipulação de arquivosFunções para manipulação de arquivosFunções para manipulação de arquivosFunções para manipulação de arquivos

FunçãoFunção FinalidadeFinalidade

fscanf()fscanf() É para um arquivo o que scanf() é para É para um arquivo o que scanf() é para o consoleo console

fwrite()fwrite() Escreve tipos de dados maiores que Escreve tipos de dados maiores que um byte em arquivoum byte em arquivo

fread()fread() Lê tipos de dados maiores que um Lê tipos de dados maiores que um byte em arquivobyte em arquivo

feof()feof() Devolve verdadeiro se o fim de arquivo Devolve verdadeiro se o fim de arquivo for atingidofor atingido

ferror()ferror() Devolve verdadeiro se ocorreu um erroDevolve verdadeiro se ocorreu um erro

remove()remove() Apaga um arquivoApaga um arquivo

fseek()fseek() Posiciona o arquivo em um byte Posiciona o arquivo em um byte específicoespecífico

Page 14: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

fopen(<nome do arquivo>, <modo>) fopen(<nome do arquivo>, <modo>)

Abrindo um arquivoAbrindo um arquivo:: Função :: Função fopen()fopen()Abrindo um arquivoAbrindo um arquivo:: Função :: Função fopen()fopen()

Abre um arquivo para leitura e/ou escrita.Abre um arquivo para leitura e/ou escrita.

Retorna um ponteiro para o arquivo.Retorna um ponteiro para o arquivo.

NuncaNunca se deve alterar o valor desse ponteiro. se deve alterar o valor desse ponteiro.

É a única função que tem o É a única função que tem o nome do arquivonome do arquivo como argumento. Todas as demais funções como argumento. Todas as demais funções utilizam o utilizam o valor do ponteiro valor do ponteiro para indicar que para indicar que arquivo estão manipulando.arquivo estão manipulando.

O parâmetro O parâmetro <modo><modo> determina como o arquivo determina como o arquivo será aberto.será aberto.

Page 15: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Abrindo um arquivoAbrindo um arquivo:: Modo:: ModoAbrindo um arquivoAbrindo um arquivo:: Modo:: Modo

ModoModo SignificadoSignificado

rr Abre um arquivo texto para leituraAbre um arquivo texto para leitura

ww Cria/sobrescreve um arquivo texto para escritaCria/sobrescreve um arquivo texto para escrita

aa Anexa a um arquivo texto existenteAnexa a um arquivo texto existente

rbrb Abre um arquivo binário para leituraAbre um arquivo binário para leitura

wbwb Cria/sobrescreve um arquivo binário para Cria/sobrescreve um arquivo binário para escritaescrita

abab Anexa a um arquivo binário existenteAnexa a um arquivo binário existente

r+r+ Abre um arquivo texto para leitura e escritaAbre um arquivo texto para leitura e escrita

w+w+ Cria/sobrescreve um arquivo texto para leitura Cria/sobrescreve um arquivo texto para leitura e escritae escrita

rb+rb+ Abre um arquivo binário para leitura e escritaAbre um arquivo binário para leitura e escrita

wb+wb+ Cria/sobrescreve um arquivo binário para Cria/sobrescreve um arquivo binário para leitura e escritaleitura e escrita

Page 16: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Abrindo um arquivoAbrindo um arquivo:: Função :: Função fopen()fopen()Abrindo um arquivoAbrindo um arquivo:: Função :: Função fopen()fopen()

Caso ocorra um erro na abertura do Caso ocorra um erro na abertura do arquivo, esta função retornará um arquivo, esta função retornará um ponteiro vazio (ponteiro vazio (NULLNULL))..

Deve-se sempre testar o sucesso de Deve-se sempre testar o sucesso de fopen()fopen() antes de tentar qualquer outra antes de tentar qualquer outra operação sobre o arquivo.operação sobre o arquivo.

O número máximo de arquivos que podem O número máximo de arquivos que podem estar abertos simultaneamente é dado estar abertos simultaneamente é dado pela macro pela macro FOPEN_MAXFOPEN_MAX, da biblioteca , da biblioteca stdio.hstdio.h..

Page 17: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

fclose(<pt_arquivo>);fclose(<pt_arquivo>);

Fechando um arquivoFechando um arquivo:: Função :: Função fclose()fclose()Fechando um arquivoFechando um arquivo:: Função :: Função fclose()fclose()

Serve para dissociar uma stream de um Serve para dissociar uma stream de um arquivo aberto pela função arquivo aberto pela função fopen()fopen()..

Em caso de sucesso, Em caso de sucesso, fclose()fclose() retorna 0 retorna 0 (zero). Qualquer outro valor indica erro no (zero). Qualquer outro valor indica erro no fechamento do arquivo indicado.fechamento do arquivo indicado.

151150

Page 18: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

putc(<caractere>, <pt_arquivo>);fputc(<caractere>, <pt_arquivo>);putc(<caractere>, <pt_arquivo>);fputc(<caractere>, <pt_arquivo>);

Escrevendo um caractereEscrevendo um caractere:: Função :: Função fputc()fputc()Escrevendo um caractereEscrevendo um caractere:: Função :: Função fputc()fputc()

O padrão C ANSI define duas funções O padrão C ANSI define duas funções equivalentes para escrever caracteres em equivalentes para escrever caracteres em um arquivo: um arquivo: putc()putc() e e fputc()fputc()..

Ambas escrevem caracteres em um Ambas escrevem caracteres em um arquivo que foi previamente aberto por arquivo que foi previamente aberto por fopen()fopen()..

152

Page 19: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Lendo um caractereLendo um caractere:: Função :: Função fgetc()fgetc()Lendo um caractereLendo um caractere:: Função :: Função fgetc()fgetc()

Para ler um caractere em um arquivo Para ler um caractere em um arquivo aberto por aberto por fopen()fopen(), pode-se usar as , pode-se usar as funções funções getc()getc() ou ou fgetc()fgetc(). .

A função devolve A função devolve EOFEOF quando o final do quando o final do arquivo é alcançado.arquivo é alcançado.

var = fgetc(<pt_arquivo>);var = fgetc(<pt_arquivo>);

Page 20: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

do {ch = fgetc(pt_arq);

} while (ch != EOF);

do {ch = fgetc(pt_arq);

} while (ch != EOF);

Lendo um caractereLendo um caractere:: Função :: Função getc()getc()Lendo um caractereLendo um caractere:: Função :: Função getc()getc()

No código abaixo, o arquivo é lido até que No código abaixo, o arquivo é lido até que a marca de final de arquivo (a marca de final de arquivo (EOF – EOF – End of End of FileFile) seja alcançada.) seja alcançada.

153

Page 21: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Lendo uma stringLendo uma string:: Função :: Função fgets()fgets()Lendo uma stringLendo uma string:: Função :: Função fgets()fgets()

Lê uma string de caracteres Lê uma string de caracteres da stream da stream especificada até que um caractere de especificada até que um caractere de nova linha nova linha seja lido ou que seja lido ou que length-1length-1 caracteres sejam lidos.caracteres sejam lidos.

Se lido, o caractere de nova linha (Se lido, o caractere de nova linha (\n\n) faz ) faz parte da string.parte da string.

A string resultante é terminada por um A string resultante é terminada por um caractere nulo (caractere nulo (\0\0).).

154

fgets(string, lenght, pt_arquivo);fgets(string, lenght, pt_arquivo);

Page 22: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Escrevendo uma stringEscrevendo uma string:: Função :: Função fputs()fputs()Escrevendo uma stringEscrevendo uma string:: Função :: Função fputs()fputs()

GravaGrava string de caracteres na stream string de caracteres na stream especificada.especificada.

Devolve Devolve EOFEOF se ocorrer erro. se ocorrer erro.

155b

fputs(string, pt_arquivo);fputs(string, pt_arquivo);

155

Page 23: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Lendo e escrevendo estruturas de dadosLendo e escrevendo estruturas de dados:: Funções :: Funções fread()fread() e e fwrite()fwrite()Lendo e escrevendo estruturas de dadosLendo e escrevendo estruturas de dados:: Funções :: Funções fread()fread() e e fwrite()fwrite()

Permitem a leitura e escrita de blocos de Permitem a leitura e escrita de blocos de qualquer tipo de dado.qualquer tipo de dado.

bufferbuffer é um ponteiro para que receberá/ é um ponteiro para que receberá/ fornecerá os dados lidos/escritos no arquivo.fornecerá os dados lidos/escritos no arquivo.

no_bytesno_bytes é o número de bytes a ler/escrever. é o número de bytes a ler/escrever.

no_itensno_itens determina quantos itens serao lidos/ determina quantos itens serao lidos/ escritos, cada um de comprimento escritos, cada um de comprimento no_bytesno_bytes..

fread(buffer, no_bytes, no_itens, pt_arq);fwrite(buffer, no_bytes, no_itens, pt_arq);fread(buffer, no_bytes, no_itens, pt_arq);fwrite(buffer, no_bytes, no_itens, pt_arq);

Page 24: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

A função A função fread()fread() devolve o devolve o númeronúmero de itens lido de itens lido e a função e a função fwrite()fwrite() devolve o devolve o númeronúmero de itens de itens escritos.escritos.

Se tais valores forem menores que o campo Se tais valores forem menores que o campo no_itensno_itens, é porque o final do arquivo (, é porque o final do arquivo (EOFEOF) foi ) foi atingido, ou ocorreu um erro.atingido, ou ocorreu um erro.

Uma das aplicações mais úteis dessas funções Uma das aplicações mais úteis dessas funções envolve envolve ler e escrever tipos de dados definidos ler e escrever tipos de dados definidos pelo usuáriopelo usuário, especialmente , especialmente estruturasestruturas..

Lendo e escrevendo estruturas de dadosLendo e escrevendo estruturas de dados:: Funções :: Funções fread()fread() e e fwrite()fwrite()Lendo e escrevendo estruturas de dadosLendo e escrevendo estruturas de dados:: Funções :: Funções fread()fread() e e fwrite()fwrite()

156 157

Page 25: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Lendo e escrevendo dados formatadosLendo e escrevendo dados formatados:: Funções :: Funções fscanf()fscanf() e e fprintf()fprintf()Lendo e escrevendo dados formatadosLendo e escrevendo dados formatados:: Funções :: Funções fscanf()fscanf() e e fprintf()fprintf()

Essas funções funcionam exatamente Essas funções funcionam exatamente como como printf()printf() e e scanf()scanf(), exceto por , exceto por operarem com arquivos.operarem com arquivos.

Note que Note que fprintf()fprintf() e e scanf()scanf() direcionam suas operações de entrada e direcionam suas operações de entrada e saída formatadas para o arquivo apontado saída formatadas para o arquivo apontado por por pt_arqpt_arq..

fprintf(pt_arq, string_controle, argumentos);fscanf(pt_arq, string_controle, argumentos);fprintf(pt_arq, string_controle, argumentos);fscanf(pt_arq, string_controle, argumentos);

Page 26: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Lendo e escrevendo dados formatadosLendo e escrevendo dados formatados:: Funções :: Funções fscanf()fscanf() e e fprintf()fprintf()Lendo e escrevendo dados formatadosLendo e escrevendo dados formatados:: Funções :: Funções fscanf()fscanf() e e fprintf()fprintf()

Embora essas duas funções sejam a maneira mais Embora essas duas funções sejam a maneira mais fácil de escrever e ler dados em arquivos de disco, fácil de escrever e ler dados em arquivos de disco, nem sempre são a escolha mais apropriadanem sempre são a escolha mais apropriada..

Como os dados são escritos em ASCII e formatados Como os dados são escritos em ASCII e formatados como apareceriam na tela (e não em binário), como apareceriam na tela (e não em binário), um um tempo extra é perdido a cada chamadatempo extra é perdido a cada chamada..

Portanto, se há preocupação com Portanto, se há preocupação com velocidade velocidade ou ou tamanho tamanho de arquivo, deve-se utilizar as funções de arquivo, deve-se utilizar as funções fread()fread() e e fwrite()fwrite()..

159158

Page 27: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Biblioteca Biblioteca stdio.hstdio.hBiblioteca Biblioteca stdio.hstdio.h

O arquivo de cabeçalho O arquivo de cabeçalho stdio.hstdio.h também também define várias macros como: define várias macros como: NULLNULL, , EOFEOF, , FOPEN_MAXFOPEN_MAX, , SEEK_SETSEEK_SET, , SEEK_CURSEEK_CUR e e SEEK_ENDSEEK_END.. A macro A macro NULLNULL define um ponteiro nulo. define um ponteiro nulo.

A macroA macro EOF EOF corresponde ao valor inteiro corresponde ao valor inteiro -1-1, e , e indica o final de um arquivo.indica o final de um arquivo.

As outras macros são utilizadas pela função As outras macros são utilizadas pela função fseek()fseek()..

Page 28: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Acesso aleatórioAcesso aleatório:: Função :: Função fseek()fseek()Acesso aleatórioAcesso aleatório:: Função :: Função fseek()fseek()

Operações de leitura e escrita aleatórias Operações de leitura e escrita aleatórias podem ser realizadas com a ajuda da podem ser realizadas com a ajuda da função função fseek()fseek(), que , que modifica o indicador modifica o indicador de posição de arquivode posição de arquivo..

no_bytesno_bytes é o número de bytes, a partir de é o número de bytes, a partir de origemorigem, que se deseja avançar., que se deseja avançar.

origemorigem é uma das seguintes macros:é uma das seguintes macros:

fseek(pt_arq, no_bytes, origem);fseek(pt_arq, no_bytes, origem);

Page 29: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

Acesso aleatórioAcesso aleatório:: Função :: Função fseek()fseek()Acesso aleatórioAcesso aleatório:: Função :: Função fseek()fseek()

A função A função fseek()fseek() pode ser utilizada para efetuar pode ser utilizada para efetuar movimentações em múltiplos de qualquer tipo de movimentações em múltiplos de qualquer tipo de dado, simplesmente utilizando-se o comando dado, simplesmente utilizando-se o comando sizeof()sizeof()..

160

OrigemOrigem MacroMacro

Início do arquivoInício do arquivo SEEK_SETSEEK_SET

Posição atualPosição atual SEEK_CURSEEK_CUR

Final do arquivoFinal do arquivo SEEK_ENDSEEK_END

Page 30: Algoritmos e Estruturas de Dados Linguagem C - Arquivos - Prof. Me. Claudio Benossi claudio@beno.com.br

QuestõesQuestõesQuestõesQuestões