nao consigo copiar arquivo em c [RESOLVIDO]

1. nao consigo copiar arquivo em c [RESOLVIDO]

ernesto lopes
ernesto lopes

(usa Ubuntu)

Enviado em 20/11/2011 - 03:15h

estou tentando copiar oi conteudo de arquivo modo texto em para outro mas não consigo da muitos erros aqui esta o codigoo peço que alguem de uma olhada
#include <stdio.h>
int main ()
{
int i, result ;//variaveis
FILE *arqbase,*arqcopia;//ponteiros para arquivo.
char linha [1000];//guarda o conteudo da linha
arqbase=fopen ("arqbase.txt","w+");
if (arqbase==NULL){
printf("erro ao abrir o arquivo ");
return (0);

}

for (i=0;i<10;i++)
{
result=fprintf(arqbase,"clint %d\n",i);
if (result==EOF)
printf("erro na gravação\n");
}

arqcopia=fopen ("arqcopia.txt","w+");
if (arqcopia==NULL){
printf("erro ao abrir o arquivo ");
return (0);

}
while (!feof(arqbase))
{
fgets (linha,1000,arqbase);
result =fprintf(arqcopia,"%s",linha );



}





  


2. Re: nao consigo copiar arquivo em c [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 20/11/2011 - 11:17h

ernesto lopes escreveu:

estou tentando copiar oi conteudo de arquivo modo texto em para outro mas não consigo da muitos erros aqui esta o codigoo peço que alguem de uma olhada


Que erros são esses?


3. Re: nao consigo copiar arquivo em c [RESOLVIDO]

Marcos Paulo Ferreira
daemonio

(usa Slackware)

Enviado em 20/11/2011 - 12:11h

Oi,


Você tá abrindo os dois arquivos com o modo "w+". O primeiro arquivo, o base, deve ser aberto
para leitura (ex: "r") e não escrita. Abrindo-o como "w+" você estará pedindo para o sistema operacional deletar (= truncar) o conteúdo do arquivo e quando você tentar ler o conteúdo do mesmo, ele já não existirá mais.


t+


4. mudei o modo de abertura do aruqivo para

ernesto lopes
ernesto lopes

(usa Ubuntu)

Enviado em 22/11/2011 - 14:28h

mudei o modo de abertura pa ra r mas não adiantou e aparece o seguinte erro
warning: assignment makes pointer from integer without a cast|
e naõ copia o arquivo

#include <stdio.h>
int main ()
{
int i, result;//variaveis
char *aux1,*aux2;

FILE *arqbase,*arqcopia;//ponteiros para arquivo.
char linha [1000];//guarda o conteudo da linha
arqbase=fopen ("arqbase.txt","r");
if (arqbase==NULL){
printf("erro ao abrir o arquivo ");
return (0);

}

for (i=0;i<10;i++)
{
result=fprintf(arqbase,"clint %d\n",i);
if (result==EOF)
printf("erro na gravação\n");
}

arqcopia=fopen ("arqcopia.txt","w+");
if (arqcopia==NULL){
printf("erro ao abrir o arquivo ");
return (0);

}
while (!feof(arqbase))
{
aux1 =fgets (linha,1000,arqbase);
aux2 =fprintf(arqcopia,"%s",linha );



}





fclose(arqbase);
fclose(arqcopia);
return (0);



5. Re: nao consigo copiar arquivo em c [RESOLVIDO]

Bruno Rogério Fernandes
brunorf

(usa Arch Linux)

Enviado em 22/11/2011 - 15:04h

O "erro" que você falou é somente um warning. Isso ocorre porque a função fprintf não retorna o que ela leu, mas sim o número de caracteres que ela escreveu, ou seja, retorna um int e não um char*.

Também, pelo que sei, não é possível ler o que foi gravado em um arquivo antes de fechá-lo, ou seja, depois do primeiro for, você precisa dar um fclose e depois abrir o arqbase.txt novamente (como leitura).

O código fica assim então

#include <stdio.h>
int main ()
{
int i, result;//variaveis
char *aux1,*aux2;

FILE *arqbase,*arqcopia;//ponteiros para arquivo.
char linha [1000];//guarda o conteudo da linha
arqbase=fopen ("arqbase.txt","w");

if (arqbase==NULL)
{
printf("erro ao abrir o arquivo ");
return (0);
}

for (i=0;i<10;i++)
{
result=fprintf(arqbase,"clint %d\n",i);
if (result==EOF)
printf("erro na gravação\n");
}

fclose(arqbase);
fopen("arqbase.txt","r");

arqcopia=fopen ("arqcopia.txt","w+");
if (arqcopia==NULL)
{
printf("erro ao abrir o arquivo ");
return (0);
}
while (!feof(arqbase))
{
aux1 =fgets (linha,1000,arqbase);
//aux2 =fprintf(arqcopia,"%s",linha );
fprintf(arqcopia,"%s",linha );
}
}


Abraços!


6. Re: nao consigo copiar arquivo em c [RESOLVIDO]

ernesto lopes
ernesto lopes

(usa Ubuntu)

Enviado em 22/11/2011 - 18:47h

obrigado bruno
então eu não posso escrever e ler no mesmo arquivo sem ter que
fechalo isso eu entendi . mas no caso do aux ela precisda ser interia para eu escrever no arquivo ,poderia explicar mais por favor ?desde já agradeço


7. Re: nao consigo copiar arquivo em c [RESOLVIDO]

Bruno Rogério Fernandes
brunorf

(usa Arch Linux)

Enviado em 24/11/2011 - 10:37h

A função fprintf retorna o número de caracteres que ela escreveu, por exemplo:
char nome[] = "bruno";
fprintf(fp, "Nome: %s", nome);

Vai retornar 11, pois a cadeia "Nome: " + "bruno" tem 11 caracteres.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts