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

copiar caracteres de um fichero a outro


Pablo Polícia

Pergunta

Hola pessoal, tenho um problema, preciso fazer um programa que transfira o conteudo de um fichero para outro fichero.

O codigo que fiz funciona apenas para o fichero original, mas na hora de transferir os dados, não está dando certo.


#include <stdio.h>
#include <stdlib.h>

void copiar(FILE *ficher) {
char Caractere;
FILE *destin;
destin=fopen("pinche.txt", "w");
if (destin==NULL) {
printf("Error de apertura de fichero");
exit(1);
}
else{
Caractere = getc(ficher);
while (Caractere != EOF) {
printf("%c", Caractere);
Caractere = getc(ficher);
putc(Caractere,destin);
}
}
fclose(destin);
printf("há terminado");
}
int main()
{
FILE *fichero;

char c;

int i;

fichero=fopen("texto.txt", "w+");

if (fichero==NULL) {
printf("Error de apertura de fichero");
exit(1);
}
else {
do {
c = getche();
if (c == 13) {
putc('\n',fichero);
printf("\n");
}
else {
for (i=0; i<10; i++) {
putc(c,fichero);
}
}
} while (c != 26);

}

copiar(fichero);
fclose(fichero);





printf("Hello world!\n");
return 0;
}







[/CODEBOX]

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olha, eu não saco muito de dessas funções de manipulação de arquivos, costumo usar mais as contidas em fstream. Mas mesmo assim não entendi porque nas chamadas de

Caractere = getc(ficher);
estão alterando o conteúdo de ficher, quando se espera que o conteudo seja somente extraido de lá. O que eu fiz aqui, e deu + ou - certo ( um pequeno lixo de memória foi parar no arquivo cópia) foi não passar o FILE como parametro da função de copiar, mas sim passar o filename, para que dentro da função o arquivo fosse aberto como somente leitura.
#include <stdio.h>
#include <stdlib.h>

void copiar(char *filename) {
    int Caractere = 0;
    FILE *ficher;
    FILE *destin;
    ficher = fopen(filename,"r");
    destin=fopen("pinche.txt", "w");
    if (destin==NULL) {
        printf("Error de apertura de fichero");
        exit(1);
    }
    else{

        while (Caractere != EOF) {
            printf("%c", Caractere);
            Caractere = fgetc(ficher);
            putc(Caractere,destin);
        }
    }
    fclose(destin);
    printf("terminado");
}
int main()
{
    FILE *fichero;

    char c;

    int i;

    fichero=fopen("texto.txt", "w+");

    if (fichero==NULL) {
        printf("Error de apertura de fichero");
        exit(1);
    }
    else {
        do {
            c = getchar();
            if (c == 13) {
                putc('\n',fichero);
                printf("\n");
            }
            else {
                for (i=0; i<10; i++) {
                    putc(c,fichero);
                }
            }

        } while (c != 26);
    }

    fclose(fichero);
    copiar("texto.txt");
    return 0;
}

Editado por Myho
Link para o comentário
Compartilhar em outros sites

  • 0

consegui resolver de outra forma. Eu dividi o problema em 2 programas no mesmo project.

O primeiro ler os caracteres do teclado e grava no fichero.


int main()
{
FILE *fichero;
char c;
int i;

fichero=fopen("texto.txt", "w");
if (fichero==NULL) {
printf("no es");
exit(1);
}
else{
do {
c = getche();
if (c == 13) {
putc('\n',fichero);
printf("\n");
}
else {
for (i=0; i<10; i++) {
putc(c,fichero);
}
}
} while (c != 26);
}
fclose(fichero);

printf("Hello world!\n");
return 0;
}




[/CODEBOX]

O segundo programa, captura os dados de um fichero para outro:

[CODEBOX]
void copiar(FILE *ficher) { // copia os pinches dos dados do fichero a outro
char Caractere;
FILE *destin;
destin=fopen("pinche.txt", "w");
if (destin==NULL) {
printf("Error de apertura de fichero");
exit(1);
}
else{
Caractere = getc(ficher);
putc(Caractere,destin);
while (Caractere != EOF) {
Caractere = getc(ficher);
putc(Caractere,destin);
}
}
fclose(destin);
}

void capturar_dados() { // captura os pinches dos dados do fichero
char Caractere;
FILE *destin;
destin=fopen("pinche.txt", "r");
if (destin==NULL) {
printf("Error de apertura de fichero");
exit(1);
}
else{
Caractere = getc(destin);
while (Caractere != EOF) {
printf("%c", Caractere);
Caractere = getc(destin);

}
}
fclose(destin);



}
int main()
{
FILE *fichero;


char c;

int i;

fichero=fopen("texto.txt", "r");


if (fichero==NULL) {
printf("Error de apertura de fichero");
exit(1);
}



copiar(fichero);
fclose(fichero);
capturar_dados();





printf("Hello world!\n");
return 0;
}




Valeu Myho pela ajuda.

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