Backup de arquivo

Olá pessoal é o seguinte, tenho um código aqui que faz gravação de entrada de dado em arquivo txt, porém ele grava tudo numa linha só com espaço e etc desta maneira: (Nome da pessoa idade habilidade), ele sai impresso no txt desta maneira.
Até aí tudo bem…
Preciso de fazer um backup de arquivos txt e está funcionando parcialmente pois ele grava somente até “Nome” e não grava o restante que está naquela linha por conta do espaço sendo que ele aguarda que a linha abaixo tenha dados, mas isto não acontece pois tudo é gravado em uma única linha no txt.

Como devo tratar esta situação para que ele grave no backup toda linha do txt?
Vejam parte do código em que se executa o backup:

int backup(){
void copiar(FILE *c, FILE *back);
c = fopen(“competicao.txt”, “r”);
if(c == NULL){
printf("\nErro ao abrir");
return 0;
}
back = fopen(“backup.txt”, “w”);
copiar(c, back);

fclose(c);
fclose(back);
return 0;

}
void copiar(FILE *c, FILE *back){//copia para backup
char leitor[1000];
while(fgets(leitor, sizeof(leitor), c)!= ‘\0’); //ler até valor nulo, gostaria que lê-se a linha até o fim
fputs(leitor, back);
printf("\nBackup realizado\n");
}

Cara não compreendi a sua dúvida, já que rodei seu
código e funcionou como esperado.

Talvez seria melhor você reformular sua pergunta.

o/