Guião laboratorial n.º 3 – exercício 5

Desenvolva uma função que troque o conteúdo de dois ficheiros. Os nomes dos ficheiros são passados como argumentos da função.

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

void trocaC(char *t1, char *t2){
FILE *f1;
FILE *f2;
FILE *temp1, * temp2;
char chO1,chO2;

f1=fopen(t1, "r");
f2=fopen(t2, "r");
temp1=fopen("temp1.txt", "w");
temp2=fopen("temp2.txt", "w");

if(f1==NULL){
 printf("\nerro ao abrir o ficheiro %c", *t1);
 return;
}
if(f2==NULL){
 printf("\nerro ao abrir o ficheiro %c", *t2);
 return;
}
if(temp1==NULL || temp2==NULL){
 printf("\nerro ao abrir o ficheiro temp");
 return;
}

//-----------------------copiar dos originais para o temporario
while((chO1=fgetc(f1))!=EOF){
fputc(chO1, temp1);
}
while((chO2=fgetc(f2))!=EOF){
fputc(chO2, temp2);
}
printf("\ncopia do ficheiro %c::%c para o temp com sucesso", *t1, *t2);
fclose(temp1);
fclose(temp2);
fclose(f1);
fclose(f2);

//-----------------------copiar do temporario para os originais
temp1=fopen("temp1.txt", "r");
temp2=fopen("temp2.txt", "r");
f1=fopen(t1, "w");
f2=fopen(t2, "w");


while((chO1=fgetc(temp1))!=EOF){
fputc(chO1, f2);
}
while((chO2=fgetc(temp2))!=EOF){
fputc(chO2, f1);
}
fclose(temp1);
fclose(temp2);
fclose(f1);
fclose(f2);

remove("temp1.txt");
remove("temp2.txt");
}


int main()
{
 char s1[20], s2[20];

 printf("Qual o nome do 1 ficheiro?");
 gets(s1);
 printf("Qual o nome do 2 ficheiro?");
 gets(s2);
 trocaC(s1, s2);

 return 0;
}

Tags : , ,