domingo, 7 de abril de 2013

Arquivos


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;

Nenhum comentário:

Postar um comentário