Sign in to follow this  
Lucksky

Ajuda Com Sistema De Arquivos

Recommended Posts

Pessoal,

Estou querendo fazer um programa que leia um nome de um arquivo origem e de um arquivo destino na linha de comando copiando o conteúdo da origem para o destino.

para ler já desenvolvi ficando assim:

#include <unistd.h>
           #include <stdio.h>
           #include <fcntl.h>
           #include <sys/types.h>
           # define max 100
            int main (int argc,char **argv){
            int fd,br;
            char buffer[max];
            if (argc!=2)
             printf ("sintaxe:%s nome-arquivo\n",argv[0]);
             else{
             fd=open(argv[1],O_RDONLY);
             if (fd<0)
              printf ("erro:não foi possivel abrir %s\n" arg[1]);
              else{
              br=read (fd,buffer,max);
              if (br<0)
              printf ("erro:não foi possivel ler %s\n",argv[1]);
              close (fd);
}
}

Agora como faço pra copiar da origem para o destino??

Share this post


Link to post
Share on other sites

Acredito que seja mais facil voce usar as funcoes fopen e fclose para trabalhar com seus arquivos. A fopen devolve um parametro do tipo FILE* que é um ponteiro para o filehandler do seu arquivo (sera NULL caso falhe).

Sintaxe: FILE *fopen(char *arquivo, char *op);

op é uma string que diz qual o modo de abertura do arquivo. Para ler, use "rb" (o b é para abrir em modo binario. faz bastante diferenca quando você esta programando para mais de um sistema operacional) e para imprimir use "wb+" (o + é para ele criar o arquivo caso não exista).

Tendo aberto com o fopen, voce pode usar fgetc para ir lendo byte por byte do arquivo.

Sintaxe: char fgetc(FILE *arq);

E a cada byte lido, voce usa fputc para gravar no arquivo de destino (que voce já abriu em modo de escrita)

Sintaxe: int fputc(char c, FILE *arq);

Voce deve parar isso quando a funcao feof indicar que o arquivo inicial acabou (devolveu algum valor diferente de 0).

Sintaxe: int feof(FILE *arq);

Caso voce queira usar open e close para trabalhar com seus arquivos (não é muito recomendado uma vez que fopen e fclose estao disponiveis em qualquer sistema), de uma olhada nas funcoes read e write.

Share this post


Link to post
Share on other sites

Ai vai:

FILE *in;
FILE *out;
in = fopen("arquivo.entrada", "rb");
out = fopen("arquivo.saida", "wb+");

if (in == NULL || out == NULL){
       fprintf(stderr, "Falha na abertura de arquivos\n");
       return 1;
}

while (!feof(in))
      fputc(fgetc(in), out);

fclose(in);
fclose(out);

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this