Arquivos.
São.
Um.
Porre.
Vou
até
ser
menos
legal
com
eles.
Declaração:
FILE
*arquivo;
//declarei
um
ponteiro
que
vai
ser
a
representação
do
meu
arquivo
no
programa
arquivo
=
fopen(nome,
modo);
//nome
vem
entre
aspas
e
é
o
nome
do
arquivo
que
eu
vou
querer
abrir,
modo
também
vem
entre
aspas
e
diz
o
que
eu
vou
fazer.
Esses
são
os
modos.
Agora
as
principais
funções:
Abrir:
arquivo
=
fopen(“arquivo.txt”,
“wb+”);
Fim
do
arquivo:
feof(arquivo);
Ler:
fread
(variável
que
vai
receber,
tamanho
a
ser
lido,
quantas
vezes
vai
ler,
arquivo);
Escrever:
fwrite
(var
que
vai
escrever,
tamanho
a
ser
escrito,
quantas
vezes
vai
escrever,
arquivo);
Posição
do
cursor:
ftell(arquivo);
Volta
o
cursor
pro
começo:
rewind(arquivo);
Posicionar
o
cursor:
fseek(arquivo,
tamanho
a
pular,
de
onde
começa)
//SEEK_SET
=
início,
SEEK_END
=
final,
SEEK_CUR
=
de
onde
está
agora
Fechar:
fclose(arquivo);
Também tem outras funções, como as de manipular diretamente char ou String (putc(caracter, arquivo) e puts(string, arquivo) para escrever, por exemplo). Mas com as que eu coloquei já dá pra trabalhar, portanto não vou aprofundar no assunto por agora.
Vou colocar um códigozinho aqui pra demonstrar algumas funções:
FILE *arq, *cop; //declarei meus dois arquivos
if (arq = fopen("arquivo.txt", "wb+" && cop = fopen("copia.txt", "wb+")) { //verifiquei se foi possível abrir os dois
fseek(arq, 0, SEEK_SET); //coloquei o cursor no início
fseek(cop, 0, SEEK_SET);
while(!feof(arq)) { //enquanto não acabar o fim do arquivo arq
char c;
fread(c, 1, 1, arq); //eu leio 1 char de arq
fwrite(c, 1, 1, cop); //e escrevo esse char em cop
}
fclose(arq); //fecho os dois ao final da cópia
fclose(cop); //sempre importante fechar
} //fim
Escrevi aqui e agora, não compilei esse trem. Mas se não funcionar, o código correto é algo bem parecido. Esse está bem rudimentar porque eu não tratei muitos dos possíveis erros, só o da abertura de arquivo (se a abertura falhar, a função retorna NULL). Porém dá pra pegar mais ou menos o uso;