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

Copiar Arquivos Com C++


juna1

Pergunta

vou contar o q preciso fazer para ver se alguém consegue implementar...

abro um txt do hd --> ok feito

este txt é composto por linhas de diretórios entre aspas e em seguida um número (vou chama-lo de status)

leio este diretório --> ok feito

leio o status e verifico se é 0 ou 1 --> ok feito

se 0 copio o arquivo mencionado no diretório lido do txt (que pode ser de uma imagem, planilha, etc) e copio este arquivo para a pasta X se não para a pasta Y --> não FEITO.

Só falta esta parte para eu terminar este programa (e o pior de tudo, é para o trampo...) help

vai o código que já fiz se alguém achar uma maneira ou uma implementação melhor eu agradeço..

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#define MAX 100

#include <iostream>

#include <conio.h>

using namespace::std;

int main(void){

char *p;

char linha[MAX];

FILE *arq;

if ((arq = fopen("T1.txt", "r"))) {

if(! arq) {

perror("Erro ao abrir arquivo");

getch();

return -1;

}

while (fgets(linha, MAX, arq)) {

/* tira o \n da linha lida do arquivo se ele existir */

if ((p = strchr(linha, '\n')))

*p = '\0';

if (linha[strlen(linha) - 1] == '1'){

printf("faz o que tem que fazer se o numero for 1\n");// aqui q mora o problema

}else

if (linha[strlen(linha) - 1] == '0'){

printf("faz o que tem que fazer se o numero for 0\n");

}

if ((p = strrchr(linha, '"')))

*++p = '\0';

printf("%s\n\n", linha);

}

fclose(arq);

}

getch();

return 0;

}

Agradeço a ajuda e atenção de todos

valeu galera...

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

você pode pedir um help a seu SO e utilizar o comando de cópia dele.....

comando Linux

cp

comando Windows

copy

acho que é esse.......leia o manual do comando, se possível!!!

vou te dar um exemplo em Linux:

.
.
.
if (linha[strlen(linha) - 1] == '1'){
    //agora você precisa definir a origem e o destino do arquivo
    //depois basta usar o comando cp
   fprintf(teste,"cp %s %s",origem,destino);
   system(teste);
}else
.
.
.

Link para o comentário
Compartilhar em outros sites

  • 0

valeu pelo toque, mas não deu certo...... huh.gif ,

eu andei procurando na net algo para me ajudar e achei algo do genero onde utiliza o system para executar comandos no dos quando executado o programa.Ex: system("copy x y"), se eu passar a origem e o destino na "unha" e sem espaços em branco ele funciona legal, mas estou tentando ler o diretório de origem que esta como uma string e isso esta dificultando tudo .... dry.gif

se você ainda tiver um az na manda manda ai que eu já estou ficando louco em cima deste programa......... wacko.gif

falou... valeu...

Link para o comentário
Compartilhar em outros sites

  • 0

é simples veja isso............

pressumo eu que seus diretóris X e Y mencionados já estão declarados e inicializados como um vetor de caracteres.....

então voce já possui seu destino.......

agora você deve pegar a origem, utilizando a varável linha.......ignore o primeiro caracter e copie para uma nova string o conteúdo da variável linha até encontrar "

ai basta utilizar o comando fprintf para transformar tudo isso numa string só e jogar para o SO fazer o serviço.....

exemplo:

fprintf(comando,"copy %s %s",origem,x);

execute o comando:

system(comando);

se tiver dificuldade em codificar isso poste aqui!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

valeu, mas eu já tentei e não deu certo da uma olhada no código...

#include<windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAX 100
#include <iostream>
#include <conio.h>

using namespace::std;

int func (void){

    char *p;
    char linha[MAX];

    FILE *arq;

    if ((arq = fopen("T1.txt", "r"))) {
     if(! arq) {
       perror("Erro ao abrir arquivo");
       getch();
       return -1;
     }//if

        while (fgets(linha, MAX, arq)) {

            /* tira o \n da linha lida do arquivo se ele existir */
            if ((p = strchr(linha, '\n')))

                *p = '\0';

            if (linha[strlen(linha) - 1] == '1'){
                system("copy linha C:\\Dev-Cpp\\pasta1");
                printf("faz o que tem que fazer se o numero for 1\n");
                getch();
            
            }else
              if (linha[strlen(linha) - 1] == '0'){
                system("copy linha C:\\Dev-Cpp\\pasta0");
                printf("teste da opcao 0\n");
                getch();
              }//if

            /* tira o espaço antes do número e o número da linha lida do arquivo */ 

            if ((p = strrchr(linha, ' ')))

                *++p = '\0';


          printf("%s\n\n", linha);
            
        }//while

        func();
    }//if
        
getch();

}//func

int main(){
   func(); 
}

falou e obrigado pela atenção

Link para o comentário
Compartilhar em outros sites

  • 0

poxa cara.....você precisa tratar a string lida né!!!

testa ai............mas ainda precisa ser melhorado!!!!!

#include<windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAX 100
#include <iostream>
#include <conio.h>

using namespace::std;

int func (void){

   char *p;
   char *comando;
   char origem[30];
   char linha[MAX];
   int i=0;

   FILE *arq;

   if ((arq = fopen("T1.txt", "r"))) {
    if(! arq) {
      perror("Erro ao abrir arquivo");
      getch();
      return -1;
    }//if

       while (fgets(linha, MAX, arq)) {

           /* tira o \n da linha lida do arquivo se ele existir */
           if ((p = strchr(linha, '\n')))
               *p = '\0';

           //aqui retira seu diretorio de origem
           i=0;
           while(linha[i]!=' '){
               if (i==0);
               else
                  origem[i-1]=linha[i];
               i++;
           }
           origem[i-2]='\0';
           
           if (linha[strlen(linha) - 1] == '1'){
               sprintf(comando,"copy %s C:\\Dev-Cpp\\pasta1\\",origem);
               //printf("%s\n",comando);
               system(comando);
               //printf("faz o que tem que fazer se o numero for 1\n");
               getch();
           
           }else
             if (linha[strlen(linha) - 1] == '0'){
               sprintf(comando, "copy %s C:\\Dev-Cpp\\pasta0\\",origem);
               //printf("%s\n",comando);
               system(comando);
               getch();
             }//if

           /* tira o espaço antes do número e o número da linha lida do arquivo */ 

           //você deveria fazer isso antes.....
           //if ((p = strrchr(linha, ' ')))
           //    *++p = '\0'; 
       }//while

       func();
   }//if
       
getch();

}//func

int main(){
  func(); 
  return 0;
}

Link para o comentário
Compartilhar em outros sites

  • 0

uhu funfo quase tudo, só falta cair no loop infinito... estou fazendo uma função recursiva e não sei porque ele somente se executa uma vez.... você sabe me diser??

outra duvida, pa nesta passagem você fez um if e não deu nenhum comando no if somente no else??

while(linha[i]!=' '){
              if (i==0);
              else
                 origem[i-1]=linha[i];

bom já te aluguei de+

+ uma vez obrigado......

Link para o comentário
Compartilhar em outros sites

  • 0

outra duvida, pa nesta passagem você fez um if e não deu nenhum comando no if somente no else??

só pra ficar + didático.......o primeiro caracter da linha é a " e ela não entra no comando.....

então quando i for 0 ele não faz nada......passa pro próximo.....

quanto ao loop só vendo o código mesmo!!!!!!!!!!!

falow.............

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