/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 04/04/2025

es06. (copiafile2)
Scrivere un programma che effettui la copia un file
di testo in un altro file trasformando le lettere
minuscole in maiuscole e le maiuscole in minuscole.
*/

#include <iostream>
#include <cctype>

using namespace std;

char reverseLowerUpper(char chr);
void copiaFile(const char * nomeFileSorgente, const char * nomeFileDestinazione);

int main(void) {
	copiaFile("in.txt", "out.txt");
	
	return 0;
}

char reverseLowerUpper(char chr) {
	if (isalpha(chr)) {
		if (islower(chr)) {
			chr = toupper(chr);
		} else if (isupper(chr)) {
			chr = tolower(chr);
		}
	}
	
	return chr;
}

void copiaFile(const char * nomeFileSorgente, const char * nomeFileDestinazione) {
	FILE * fr = fopen(nomeFileSorgente, "rt");
	
	if (fr != NULL) {
		FILE * fw = fopen(nomeFileDestinazione, "wt");
		
		if (fw != NULL) {
			char chr;
			
			while ((chr = fgetc(fr)) != EOF) {
				chr = reverseLowerUpper(chr);
				fputc(chr, fw);
			}
			
			fclose(fw);
		} else {
			perror("Error (destination)");
		}
		
		fclose(fr);
	} else {
		perror("Error (source)");
	}
}