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

typedef char nomefile[20];

void LeggiNomeFile(char *messaggio,nomefile nome)
{
	printf("%s, inserisci nome: ",messaggio);
	gets(nome);
	return;
} 


FILE *ApriFile(nomefile nome, char *modo)
{
	FILE *f;
	
	f=fopen(nome,modo);
	if(f==NULL) {
		printf("Impossibile aprire %s in modalita` %s\n",nome,modo);
		exit(1);
	}
	
	return f;
}

void LeggiScriviRiga(FILE *sorg, FILE *dest)
{
	int ch;
	
	do {
		ch=fgetc(sorg);
		if(ch==EOF)
			break;
		fputc(ch,dest);
	} while(ch != '\n');
	
	return;
}


void SaltaRiga(FILE *f)
{
	int ch;
	
	do
		ch=fgetc(f);
	while((ch!='\n')&&(ch!=EOF));
	
	return;
}


void CompitoD()
{
	FILE *f, *f1, *f2, *dest;
	nomefile nome1,nome2,nome;
	
	LeggiNomeFile("File F1",nome1);
	f1=ApriFile(nome1,"w");

	LeggiNomeFile("File F2",nome2);
	f2=ApriFile(nome2,"w");

	LeggiNomeFile("File F",nome);	
	f=ApriFile(nome,"r");
	
	dest=f1;
	
	while(!feof(f)) {
		LeggiScriviRiga(f,dest);
		if(dest==f1)
			dest=f2;
		else
			dest=f1;
	}
	
	fclose(f);
	fclose(f1);
	fclose(f2);

	return;
}

void CompitoB()
{
	FILE *f1, *f2;
	nomefile nome1,nome2;
	int ch;
	
	LeggiNomeFile("File F1",nome1);
	f1=ApriFile(nome1,"r");

	LeggiNomeFile("File F2",nome2);
	f2=ApriFile(nome2,"w");

	ch=fgetc(f1);
	while(!feof(f1)) {
		if((ch<'A')||(ch>'Z')) {
			fputc(ch,f2);
			if(ch!='\n')
				LeggiScriviRiga(f1,f2);
		} else
			SaltaRiga(f1);
		ch=fgetc(f1);
	}
	
	fclose(f1);
	fclose(f2);

	return;
}

void CompitoA()
{
	FILE *f, *f1, *f2, *dest;
	nomefile nome1,nome2,nome;
	
	LeggiNomeFile("File F1",nome1);
	f1=ApriFile(nome1,"r");

	LeggiNomeFile("File F2",nome2);
	f2=ApriFile(nome2,"r");

	LeggiNomeFile("File F",nome);	
	f=ApriFile(nome,"w");
	
	while(!feof(f1)||!feof(f2)) {
		if(!feof(f1))
			LeggiScriviRiga(f1,f);
		if(!feof(f2))
			LeggiScriviRiga(f2,f);
	}
	
	fclose(f);
	fclose(f1);
	fclose(f2);

	return;
}

void CompitoC()
{
	FILE *f, *f1, *f2, *dest;
	nomefile nome1,nome2,nome;
	
	LeggiNomeFile("File F1",nome1);
	f1=ApriFile(nome1,"r");

	LeggiNomeFile("File F2",nome2);
	f2=ApriFile(nome2,"r");

	LeggiNomeFile("File F",nome);	
	f=ApriFile(nome,"w");
	
	while(!feof(f1))
			LeggiScriviRiga(f1,f);
	
	while(!feof(f2))
			LeggiScriviRiga(f2,f);
	
	fclose(f);
	fclose(f1);
	fclose(f2);

	return;
}

main() {
	CompitoC();
	return 0;
}