School-Coding-Cpp/sfusi/es11_file.cpp

60 lines
1.0 KiB
C++

/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 29/03/2025
*/
#include <iostream>
#include <cstring>
#define SIZE 1000+1
using namespace std;
void creaFile(const char *nomeFile, const char *nomeFileDestinazione);
void invertiRighe(char *str);
int main(void) {
creaFile("righe.txt", "righe_invertite.txt");
return 0;
}
void creaFile(const char *nomeFileSorgente, const char *nomeFileDestinazione) {
FILE *fr = fopen(nomeFileSorgente, "rt");
if (fr != NULL) {
FILE *fw = fopen(nomeFileDestinazione, "wt");
if (fw != NULL) {
char str[SIZE];
while (fgets(str, sizeof(str), fr) != NULL) {
char *pos;
if ((pos = strchr(str, '\n')) != NULL) {
*pos = '\0';
}
invertiRighe(str);
fputs(str, fw);
fputs("\n", fw);
}
fclose(fw);
}
fclose(fr);
} else {
perror("Error");
}
}
void invertiRighe(char *str) {
for (char *pl = str, *pr = str + strlen(str) - 1; pl < pr; pl++, pr--) {
char temp = *pl;
*pl = *pr;
*pr = temp;
}
}