Jump to content

Copiar ficheiros de uma pasta para outra em c


Hellyo
 Share

Recommended Posts

Boas pessoal,

A ideia é de uma pasta com ficheiros com nomes de 1 ate 300, escolher aleatoriamente 50 e copia-los para uma pasta l1, e depois copiar os restante 250 para uma pasta l2.

Ja tenho criada a função para escolher os ficheiros aleatoriamente, apenas (devido aos meus poucos conhecimentos de programação) não sei como os copiar.

Alguma ajuda?

Link to comment
Share on other sites

Não dá para usar a função rename com 4 variáveis?  ?

Tipo assim:

for(j=0;j<300;j++)
{
                        
                        for(i=0;i<300;i++)
                        {
                            if(rename("%d/%d.txt", "%d/Treino/%d.txt", j, numeros[i], j, numeros[i]));
                            perror( NULL );
                            getchar();
                            return 0;  
                         }
}

onde a primeira variável (variável j) é uma pasta e a outra é o ficheiro

Link to comment
Share on other sites

@John10: uma ideia é teres duas strings que vão estar trabalhadas antes de chamares a função rename com elas. Para o caso utilizarias funções como strncpy, strncat. Não podes utilizar esse tipo de formatação nesta função, estás a confundir com funções de input e output.

Já agora, neste caso, seria muito mais fácil trabalhares com uma linguagem como Python em que provavelmente permitia fazer isso numa ou duas linhas. Em C és capaz de ter de escrever algumas linhas para conseguir o mesmo resultado, vais ter que dar a volta ao bilhar grande.

[update]

Lembrei-me de uma função que te vai ajudar muito neste caso. A função sprintf vai-te permitir "escrever" tudo numa string utilizando o tipo de formatação que estás a utilizar quando chamas a função rename.

Neste caso ficava:

#define MAX 720

char str1[MAX], str2[MAX];

sprintf (str1, "%d/%d.txt", j, numeros[i]);
sprintf (str2, "%d/Treino/%d.txt", j, numeros[i]);

rename (str1, str2);

Tenta perceber o programa e consulta o link que te dei sobre a função sprintf.

here since 2009

Link to comment
Share on other sites

Se estiveres a trabalhar em ambiente UNIX, tens aqui um exemplo de copiar um ficheiro para outro (e dá para copiar para pastas diferentes): http://www.metalshell.com/source_code/100/Copy_File.html

Para testar (supondo que compilaste e lhe chamaste "teste"): ./teste /l1/file1 /l2/file2

Isto copia o file1 e, mesmo que não exista o file2, cria-o na pasta l2 e coloca nele o conteúdo de file1.

(Claro que tens de ter aquelas pastas criadas e naquela disposição no sistema de ficheiros, mas é só um exemplo).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.