Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Com Sistema De Arquivos


Lucksky

Pergunta

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??

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...