Vous êtes sur la page 1sur 11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

Programar em C/Entrada e sada em arquivos


Origem: Wikilivros, livros abertos por um mundo aberto. < Programar em C

ndice
1 Trabalhando com arquivos 2 Abrindo e fechando um arquivo 2.1 Exemplo 2.2 Arquivos pr-definidos 3 Escrevendo em arquivos 3.1 fwrite 3.2 fputc 4 Lendo de arquivos 4.1 fgetc 4.2 fgets 4.3 fscanf 4.4 fscanf 4.5 fread 5 Movendo pelo arquivo 5.1 fseek 5.2 rewind 5.3 feof 6 Outras funes 6.1 ferror e perror

Trabalhando com arquivos


J vimos como podemos receber e enviar dados para usurio atravs do teclado e da tela; agora veremos tambm como ler e gravar dados em arquivos, o que alis muito importante ou at essencial em muitas aplicaes. Assim como as funes de entrada/sada padro (teclado e tela), as funes de entrada/sada em arquivos esto declaradas no cabealho stdio.h que significa "STanDard Input-Output". Alis, as funes para manipulao de arquivos so muito semelhantes s usadas para entrada/sada padro. Como j dissemos na seo sobre a entrada e sada padres, a manipulao de arquivos tambm se d por meio de fluxos (streams). Na manipulao de um arquivo, h basicamente trs etapas que precisam ser realizadas: 1. abrir o arquivo; 2. ler e/ou gravar os dados desejados; 3. fechar o arquivo.

http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos

1/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

Em C, todas as operaes realizadas com arquivos envolvem seu identificador de fluxo, que uma varivel do tipo F I L E *(sobre o qual no cabe agora falar). Para declarar um identificador de fluxo, faa como se fosse uma varivel normal:
F I L E* f p ; / /n os ee s q u e ad oa s t e r i s c o !

Abrindo e fechando um arquivo


No surpreendentemente, a primeira coisa que se deve fazer para manipular um arquivo abri-lo. Para isso, usamos a funo f o p e n ( ) . Sua sintaxe :

FILE *fopen (char *nome_do_arquivo, char *modo_de_acesso);


O nome do arquivo deve ser uma string ou com o caminho completo (por exemplo, / u s r / s h a r e / a p p n a m e / a p p . c o n fou C : \ D o c u m e n t o s \ n o m e s . t x t ) ou o caminho em relao ao diretrio atual (n o m e s . t x t ,. . / a p p . c o n f ) do arquivo que se deseja abrir ou criar. O modo de acesso uma string que contm uma seqncia de caracteres que dizem se o arquivo ser aberto para gravao ou leitura. Depois de aberto o arquivo, voc s poder executar os tipos de ao previstos pelo modo de acesso: no poder ler de um arquivo que foi aberto somente para escrita, por exemplo. Os modos de acesso esto descritos na tabela a seguir. Modo r r+ w w+ a a+ Significado Abre o arquivo somente para leitura. O arquivo deve existir. (O r vem do ingls read, ler) Abre o arquivo para leitura e escrita. O arquivo deve existir. Abre o arquivo somente para escrita no incio do arquivo. Apagar o contedo do arquivo se ele j existir, criar um arquivo novo se no existir. (O w vem do ingls write, escrever) Abre o arquivo para escrita e leitura, apagando o contedo pr-existente. Abre o arquivo para escrita no final do arquivo. No apaga o contedo pr-existente. (O a vem do ingls append, adicionar, apender) Abre o arquivo para escrita no final do arquivo e leitura.

Em ambientes DOS/Windows, ao ler arquivos binrios (por exemplo, programas executveis ou certos tipos de arquivos de dados), deve-se adicionar o caractere "b" ao final da string de modo (por exemplo, "wb" ou "r+b") para que o arquivo seja lido/gravado corretamente. Isso necessrio porque no modo texto (o padro quando no adicionado o b) ocorrem algumas tradues de caracteres (por exemplo, a terminao de linha "\r\n" substituda apenas por "\n" na leitura) que poderiam afetar a leitura/gravao dos arquivos binrios (indevidamente inserindo ou suprimindo caracteres).

O valor de retorno da funo fopen() muito importante! Ele o identificador do fluxo que voc abriu e
http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos 2/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

s com ele que voc conseguir ler e escrever no arquivo aberto. Se houver um erro na abertura/criao do arquivo, a funo retornar o valor N U L L . O erro geralmente acontece por duas razes: O arquivo no existe, caso tenha sido requisitado para leitura. O usurio atual no tem permisso para abrir o arquivo com o modo de acesso pedido. Por exemplo, o arquivo somente-leitura, ou est bloqueado para gravao por outro programa, ou pertence a outro usurio e no tem permisso para ser lido por outros. Ao terminar de usar um arquivo, voc deve fech-lo. Isso feito pela funo f c l o s e ( ) :

int fclose (FILE *fluxo);


O nico argumento o identificador do fluxo (retornado por fopen). O valor de retorno indica o sucesso da operao com o valor zero. Fechar um arquivo faz com que qualquer caractere que tenha permanecido no "buffer" associado ao fluxo de sada seja gravado. Mas, o que este "buffer"? Quando voc envia caracteres para serem gravados em um arquivo, estes caracteres so armazenados temporariamente em uma rea de memria (o "buffer") em vez de serem escritos em disco imediatamente. Quando o "buffer" estiver cheio, seu contedo escrito no disco de uma vez. A razo para se fazer isto tem a ver com a eficincia nas leituras e gravaes de arquivos. Se, para cada caractere que fssemos gravar, tivssemos que posicionar a cabea de gravao em um ponto especfico do disco, apenas para gravar aquele caractere, as gravaes seriam muito lentas. Assim estas gravaes s sero efetuadas quando houver um volume razovel de informaes a serem gravadas ou quando o arquivo for fechado. A funo exit() fecha todos os arquivos que um programa tiver aberto. A funo fflush() fora a gravao de todos os caracteres que esto no buffer para o arquivo.

Exemplo
Um pequeno exemplo apenas para ilustrar a abertura e fechamento de arquivos:

# i n c l u d e< s t d i o . h > i n tm a i n ( ) { F I L E* f p ; f p=f o p e n( " R E A D M E " ," w " ) ; i f( f p= =N U L L ){ p r i n t f( " H o u v eu me r r oa oa b r i roa r q u i v o . \ n " ) ; r e t u r n1 ; } p r i n t f( " A r q u i v oR E A D M Ec r i a d oc o ms u c e s s o . \ n " ) ; f c l o s e( f p ) ; r e t u r n0 ; }

Arquivos pr-definidos
Na biblioteca padro do C, existem alguns fluxos pr-definidos que no precisam (nem devem) ser abertos nem fechados:
http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos 3/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

stdin: dispositivo de entrada padro (geralmente o teclado) stdout: dispositivo de sada padro (geralmente o vdeo) stderr: dispositivo de sada de erro padro (geralmente o vdeo) stdaux: dispositivo de sada auxiliar (em muitos sistemas, associado porta serial) stdprn: dispositivo de impresso padro (em muitos sistemas, associado porta paralela)

Escrevendo em arquivos
Para escrever em arquivos, h quatro funes, das quais trs so anlogas s usadas para sada padro: Sada padro Arquivos putchar puts printf N/A fputc fputs fprintf fwrite Explicao Imprime apenas um caractere. Imprime uma string diretamente, sem nenhuma formatao. Imprime uma string formatada. Grava dados binrios para um arquivo.

A seguir apresentamos os prottipos dessas funes:

void fputc (int caractere, FILE *fluxo); void fputs (char *string, FILE *fluxo); void fprintf (FILE *fluxo, char *formatao, ...); int fwrite (void *dados, int tamanho_do_elemento, int num_elementos, FILE *fluxo);
Sintaxe quase igual de printf(); s necessrio adicionar o identificador de fluxo no incio.

fwrite
Esta funo envolve os conceitos de ponteiro e vetor, que s sero abordados mais tarde. A funo fwrite() funciona como a sua companheira fread(), porm escreve no arquivo. Seu prottipo :
u n s i g n e df w r i t e ( v o i d* b u f f e r , i n tn u m e r o _ d e _ b y t e s , i n tc o u n t , F I L E* f p ) ;

A funo retorna o nmero de itens escritos. Este valor ser igual a count a menos que ocorra algum erro. O exemplo abaixo ilustra o uso de fwrite e fread para gravar e posteriormente ler uma varivel float em um arquivo binrio.

http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos

4/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

# i n c l u d e< s t d i o . h > # i n c l u d e< s t d l i b . h >

i n tm a i n ( ) { F I L E* p f ; f l o a tp i=3 . 1 4 1 5 ; f l o a tp i l i d o ; i f ( ( p f=f o p e n ( " a r q u i v o . b i n " ," w b " ) )= =N U L L )/ *A b r ea r q u i v ob i n r i op a r ae s c r i t a* / { p r i n t f ( " E r r on aa b e r t u r ad oa r q u i v o " ) ; e x i t ( 1 ) ; } i f ( f w r i t e ( & p i ,s i z e o f ( f l o a t ) ,1 , p f )! =1 ) / *E s c r e v eav a r i v e lp i* / p r i n t f ( " E r r on ae s c r i t ad oa r q u i v o " ) ; f c l o s e ( p f ) ; / *F e c h aoa r q u i v o* / i f ( ( p f=f o p e n ( " a r q u i v o . b i n " ," r b " ) )= =N U L L )/ *A b r eoa r q u i v on o v a m e n t ep a r al e i t u r a* / { p r i n t f ( " E r r on aa b e r t u r ad oa r q u i v o " ) ; e x i t ( 1 ) ; } i f ( f r e a d ( & p i l i d o ,s i z e o f ( f l o a t ) ,1 , p f )! =1 ) / *L ee mp i l i d oov a l o rd av a r i v e la r m a z e n a d aa p r i n t f ( " E r r on al e i t u r ad oa r q u i v o " ) ; p r i n t f ( " \ n Ov a l o rd eP I ,l i d od oa r q u i v oe ' :% f " ,p i l i d o ) ; f c l o s e ( p f ) ; r e t u r n0 ; }

Nota-se o uso do operador sizeof, que retorna o tamanho em bytes da varivel ou do tipo de dados.

fputc
A funo fputc a primeira funo de escrita de arquivo que veremos. Seu prottipo :
i n tf p u t c( i n tc h ,F I L E* f p ) ;

Escreve um caractere no arquivo.O programa a seguir l uma string do teclado e escreve-a, caractere por caractere em um arquivo em disco (o arquivo arquivo.txt, que ser aberto no diretrio corrente).

# i n c l u d e< s t d i o . h > # i n c l u d e< s t d l i b . h > i n tm a i n ( ) { F I L E* f p ; c h a rs t r i n g [ 1 0 0 ] ; i n ti ; f p=f o p e n ( " a r q u i v o . t x t " , " w " ) ; / *A r q u i v oA S C I I ,p a r ae s c r i t a* / i f ( ! f p ) { p r i n t f (" E r r on aa b e r t u r ad oa r q u i v o " ) ; e x i t ( 0 ) ; } p r i n t f ( " E n t r ec o mas t r i n gas e rg r a v a d an oa r q u i v o : " ) ; g e t s ( s t r i n g ) ; f o r ( i = 0 ;s t r i n g [ i ] ;i + + )p u t c ( s t r i n g [ i ] ,f p ) ;/ *G r a v aas t r i n g ,c a r a c t e r eac a r a c t e r e* / f c l o s e ( f p ) ; r e t u r n0 ; }

http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos

5/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

Depois de executar este programa, verifique o contedo do arquivo arquivo.txt (voc pode usar qualquer editor de textos). Voc ver que a string que voc digitou est armazenada nele.

Lendo de arquivos
Novamente, h quatro funes, das quais trs se assemelham s usadas para a sada padro: Sada padro Arquivos getchar gets scanf N/A fgetc fgets fscanf fread Explicao Recebe apenas um caractere. L uma string (geralmente uma linha inteira). Recebe uma string formatada. L dados binrios de um arquivo.

int fgetc (FILE *fluxo); void fgets (char *string, int tamanho, FILE *fluxo); void fscanf (FILE *fluxo, char *formatao, ...); int fread (void *dados, int tamanho_do_elemento, int num_elementos, FILE *fluxo);

Este mdulo tem a seguinte tarefa pendente: criar exemplos de uso das funes

fgetc
Est funo requer como parmetro o indicador de fluxo do arquivo, retorna um caractere do arquivo ou EOF, caso ocorra um erro ou o final do arquivo seja atingido, podendo ser verificado respectivamente por ferror e feof . Exemplo:

# i n c l u d e< s t d i o . h > # i n c l u d e< s t d l i b . h > i n tm a i n ( ) { F I L E* f l ; i n tc ; i f ( ( f l=f o p e n ( " c a m i n h o / d o / a r q u i v o " ," r " ) )= =N U L L )


http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos 6/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

{ }

p e r r o r ( " E r r o :f o p e n " ) ; e x i t ( E X I T _ F A I L U R E ) ;

w h i l e ( ( c=f g e t c ( f l ) )! =E O F ) p r i n t f ( " C a r a c t e r el i d o :% c \ n " ,c ) ; i f ( ( c= =E O F )& &( f e o f ( f l )= =0 )& &( f e r r o r ( f l )! =0 ) ) p e r r o r ( " E r r o :f g e t c " ) ; f c l o s e ( f l ) ; r e t u r nE X I T _ S U C C E S S ;

fgets
Ao chamar a funo fgets(), voc deve fornecer o ponteiro para a string onde os dados lidos devem ser guardados, alm do tamanho mximo dos dados a serem lidos (para que a memria reservada string no seja ultrapassada). Para se ler uma string num arquivo podemos usar fgets() cujo prottipo :
c h a r* f g e t s( c h a r* s t r ,i n tt a m a n h o , F I L E* f p ) ;

A funo recebe 3 argumentos: a string a ser lida, o limite mximo de caracteres a serem lidos e o ponteiro para FILE, que est associado ao arquivo de onde a string ser lida. A funo l a string at que um caracter de nova linha seja lido ou tamanho-1 caracteres tenham sido lidos. Se o caracter de nova linha ('\n') for lido, ele far parte da string, o que no acontecia com gets. A funo fgets semelhante funo gets(), porm, alm dela poder fazer a leitura a partir de um arquivo de dados e incluir o caracter de nova linha na string, ela ainda especifica o tamanho mximo da string de entrada. Como vimos, a funo gets no tinha este controle, o que poderia acarretar erros de "estouro de buffer". Portanto, levando em conta que o ponteiro fp pode ser substitudo por stdin, como vimos acima, uma alternativa ao uso de gets usar a seguinte construo:
f g e t s( s t r ,t a m a n h o ,s t d i n ) ;

fscanf
Sintaxe quase igual de scanf(); s necessrio adicionar o identificador de fluxo no incio.

fscanf
A funo fscanf() funciona como a funo scanf(). A diferena que fscanf() l de um arquivo e no do teclado do computador. Prottipo:
i n tf s c a n f( F I L E* f p , c h a r* s t r , . . . ) ;

# i n c l u d e< s t d i o . h > # i n c l u d e< s t d l i b . h >


http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos 7/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

i n tm a i n ( ) { F I L E* p ; c h a rs t r [ 8 0 ] , c ; p r i n t f ( " \ n \ nE n t r ec o mu mn o m ep a r aoa r q u i v o : \ n " ) ; / *L eu mn o m ep a r aoa r q u i v oas e ra b e r g e t s ( s t r ) ; i f( ! ( p=f o p e n ( s t r , " w " ) ) ) / *C a s oo c o r r aa l g u me r r on aa b e r t u r ad { / *op r o g r a m aa b o r t aa u t o m a t i c a m e n t e* / p r i n t f ( " E r r o !I m p o s s i v e la b r i roa r q u i v o ! \ n " ) ; e x i t ( 1 ) ; } f p r i n t f ( p , " E s t eeu ma r q u i v oc h a m a d o : \ n % s \ n " ,s t r ) ; f c l o s e ( p ) ; / *S en a oh o u v ee r r o ,i m p r i m en oa r q u i v p=f o p e n ( s t r , " r " ) ; / *a b r en o v a m e n t ep a r aal e i t u r a * / w h i l e( ! f e o f ( p ) ) { f s c a n f ( p , " % c " , & c ) ; p r i n t f ( " % c " , c ) ; } f c l o s e ( p ) ; r e t u r n0 ; }

fread
Essa funo envolve os conceitos de ponteiro e vetor, que s sero abordados mais tarde. Podemos escrever e ler blocos de dados. Para tanto, temos as funes fread() e fwrite(). O prottipo de fread() :
u n s i g n e df r e a d( v o i d* b u f f e r ,i n tn u m e r o _ d e _ b y t e s ,i n tc o u n t ,F I L E* f p ) ;

O buffer a regio de memria na qual sero armazenados os dados lidos. O nmero de bytes o tamanho da unidade a ser lida. count indica quantas unidades devem ser lidas. Isto significa que o nmero total de bytes lidos :
n u m e r o _ d e _ b y t e s * c o u n t

A funo retorna o nmero de unidades efetivamente lidas. Este nmero pode ser menor que count quando o fim do arquivo for encontrado ou ocorrer algum erro. Quando o arquivo for aberto para dados binrios, fread pode ler qualquer tipo de dados.

Movendo pelo arquivo


fseek
Para se fazer procuras e acessos randmicos em arquivos usa-se a funo fseek(). Esta move a posio corrente de leitura ou escrita no arquivo de um valor especificado, a partir de um ponto especificado. Seu prottipo :
i n tf s e e k( F I L E* f p ,l o n gn u m b y t e s ,i n to r i g e m ) ;

http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos

8/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

O parmetro origem determina a partir de onde os numbytes de movimentao sero contados. Os valores possveis so definidos por macros em stdio.h e so:
N o m e S E E K _ S E T S E E K _ C U R S E E K _ E N D V a l o r 0 1 2 S i g n i f i c a d o I n c i od oa r q u i v o P o n t oc o r r e n t en oa r q u i v o F i md oa r q u i v o

Tendo-se definido a partir de onde ir se contar, numbytes determina quantos bytes de deslocamento sero dados na posio atual.

rewind
Volta para o comeo do arquivo de um fluxo

feof
EOF ("End of file") indica o fim de um arquivo. s vezes, necessrio verificar se um arquivo chegou ao fim. Para isto podemos usar a funo feof(). Ela retorna no-zero se o arquivo chegou ao EOF, caso contrrio retorna zero. Seu prottipo :
i n tf e o f( F I L E* f p ) ;

Outra forma de se verificar se o final do arquivo foi atingido comparar o caractere lido por getc com EOF. O programa a seguir abre um arquivo j existente e o l, caracter por caracter, at que o final do arquivo seja atingido. Os caracteres lidos so apresentados na tela:

# i n c l u d e< s t d i o . h > # i n c l u d e< s t d l i b . h > i n tm a i n ( ) { F I L E* f p ; c h a rc ; f p=f o p e n ( " a r q u i v o . t x t " , " r " ) ; / *A r q u i v oA S C I I ,p a r al e i t u r a* / i f ( ! f p ) { p r i n t f (" E r r on aa b e r t u r ad oa r q u i v o " ) ; e x i t ( 0 ) ; } w h i l e ( ( c=g e t c ( f p ))! =E O F ) / *E n q u a n t on oc h e g a ra of i n a ld oa r q u i v o* / p r i n t f ( " % c " ,c ) ; / *i m p r i m eoc a r a c t e rl i d o* / f c l o s e ( f p ) ; r e t u r n0 ; }

Verifique o exemplo.

# i n c l u d e< s t d i o . h > # i n c l u d e< s t d l i b . h > # i n c l u d e< s t r i n g . h > i n tm a i n ( ) { F I L E* p ;


http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos 9/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

c h a rc ,s t r [ 3 0 ] ,f r a s e [ 8 0 ]=" E s t eeu ma r q u i v oc h a m a d o :" ; i n ti ; p r i n t f ( " \ n \ nE n t r ec o mu mn o m ep a r aoa r q u i v o : \ n " ) ; g e t s ( s t r ) ; / *L eu mn o m ep a r aoa r q u i v oas e ra b e r t o :* / i f( ! ( p=f o p e n ( s t r , " w " ) ) ) / *C a s oo c o r r aa l g u me r r on aa b e r t u r ad oa r q u i v o . . * / { p r i n t f ( " E r r o !I m p o s s i v e la b r i roa r q u i v o ! \ n " ) ; e x i t ( 1 ) ; / *op r o g r a m aa b o r t aa u t o m a t i c a m e n t e* / } s t r c a t ( f r a s e ,s t r ) ; f o r( i = 0 ;f r a s e [ i ] ;i + + ) p u t c ( f r a s e [ i ] , p ) ; f c l o s e ( p ) ; / *S en a oh o u v ee r r o , i m p r i m en oa r q u i v oeof e c h a. . . * / p=f o p e n ( s t r , " r " ) ; / *A b r en o v a m e n t ep a r a l e i t u r a * / c=g e t c ( p ) ; / *L eop r i m e i r oc a r a c t e r* / w h i l e( ! f e o f ( p ) ) / *E n q u a n t on os ec h e g a rn of i n a ld oa r q u i v o* / { p r i n t f ( " % c " , c ) ; / * I m p r i m eoc a r a c t e rn at e l a* / c=g e t c ( p ) ; / *L eu mn o v oc a r a c t e rn oa r q u i v o* / } f c l o s e ( p ) ; / *F e c h aoa r q u i v o* / }

Outras funes
Funo Explicao remove Remove um arquivo especificado

ferror e perror
Prottipo de ferror:
i n tf e r r o r( F I L E* f p ) ;

A funo retorna zero, se nenhum erro ocorreu e um nmero diferente de zero se algum erro ocorreu durante o acesso ao arquivo. se torna muito til quando queremos verificar se cada acesso a um arquivo teve sucesso, de modo que consigamos garantir a integridade dos nossos dados. Na maioria dos casos, se um arquivo pode ser aberto, ele pode ser lido ou gravado. Porm, existem situaes em que isto no ocorre. Por exemplo, pode acabar o espao em disco enquanto gravamos, ou o disco pode estar com problemas e no conseguimos ler, etc. Uma funo que pode ser usada em conjunto com ferror() a funo perror() (print error), cujo argumento uma string que normalmente indica em que parte do programa o problema ocorreu.

# i n c l u d e< s t d i o . h > # i n c l u d e< s t d l i b . h > i n tm a i n ( ) { F I L E* p f ; c h a rs t r i n g [ 1 0 0 ] ; i f ( ( p f=f o p e n ( " a r q u i v o . t x t " , " w " ) )= = N U L L ) { p r i n t f ( " \ n N a oc o n s i g oa b r i roa r q u i v o!" ) ; e x i t ( 1 ) ; } d o {
http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos 10/11

25/3/2014

Programar em C/Entrada e sada em arquivos - Wikilivros

p r i n t f ( " \ n D i g i t eu m an o v as t r i n g .P a r at e r m i n a r ,d i g i t e< e n t e r > :" ) ; g e t s ( s t r i n g ) ; f p u t s ( s t r i n g ,p f ) ; p u t c ( ' \ n ' ,p f ) ; i f ( f e r r o r ( p f ) ) { p e r r o r ( " E r r on ag r a v a c a o " ) ; f c l o s e ( p f ) ; e x i t ( 1 ) ; } } w h i l e( s t r l e n ( s t r i n g )>0 ) ; f c l o s e ( p f ) ;

Obtido em "http://pt.wikibooks.org/w/index.php? title=Programar_em_C/Entrada_e_sada_em_arquivos&oldid=266993" Categorias: !Tarefas pendentes Livro/Programar em C Esta pgina foi modificada pela ltima vez (s) 19h54min de 9 de janeiro de 2014. Este texto disponibilizado nos termos da licena Creative Commons Atribuio-Compartilhamento pela mesma Licena 3.0 Unported; pode estar sujeito a condies adicionais. Consulte as Condies de Uso para mais detalhes.

http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos

11/11

Vous aimerez peut-être aussi