Todo mundo comete o mesmo erro - ler e escrever arquivos um byte de cada vez. No seu caso, provavelmente a cópia terminou no primeiro byte 255 que foi encontrado no arquivo de entrada. Você pode corrigir esse problema de duas maneiras:
a) O jeito lento - continuar a ler e escrever um byte de cada vez. Neste caso, você deve usar:
void copyPaste(const char *copy, const char *paste)
{
FILE *entrada = fopen(copy,"rb");
FILE *saida = fopen(paste,"wb");
int c ; // note que é int, não char. Me explique por que é que o programa agora funciona :)
while((c = fgetc(entrada))!= EOF)
fputc((char) c,saida);
fclose(saida);
fclose(entrada);
}
Note que não é necessário usar fflush, já que você vai chamar fclose imediatamente depois.
b) O jeito rápido - usar um byte array para transferir o arquivo por blocos. Não vou escrever agora o programa, mas basicamente você tem de usar fread e fwrite, e usar um byte array com pelo menos 8KB ou maior para que o arquivo seja rapidamente copiado.
Preciso transferir um arquivo e o codigo abaixo não ta salvando absolutamente nada …
Estou tentando transferir uma img de uma pasta para outra…
O copy e paste inicialmente usei pra ser a referencia de arquivo,porem não consegui
e por isso mudei e coloquei os valores ali diretamente…
Errei alguma coisa?