School-Coding-Cpp/sfusi/es1_file.cpp

147 lines
3.3 KiB
C++

/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 21/03/2025
Realizzare una funzione per ciascuna delle seguenti richieste:
- visualizzare a schermo il file “vmware.log” un carattere per volta
(dopo averla provata disabilitarne la chiamata);
- copiare ogni carattere nel file “copia.txt”;
- cambiare nome “copia.txt” → “log.txt”;
- cancellare “log.txt”;
- utilizzare i comandi “pause” e “dir” del SO per seguire l'esecuzione delle funzioni
(sugg: creare una funzione “pausa”);
- copiare 100 caratteri (se ci sono..) nel file “copia100.dat”;
- (aprirlo con hexed e con il blocconote);
- aggiungere a “copia100.dat” “BY: ” + “<il tuo cognome>” in una nuova linea
(controllare con hexed).
*/
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void leggiFileCaratterePerCarattere(const char *nomeFile) {
FILE *fp = fopen("vmware.log", "rt");
if (fp != NULL) {
int chr;
while ((chr = fgetc(fp)) != EOF) {
cout << (char)chr;
}
fclose(fp);
} else {
perror("Error (source)");
}
}
int cambiaNomeFile(const char *vecchioNome, const char *nuovoNome) {
rename(vecchioNome, nuovoNome);
printf("Il nome del file e' stato cambiato da '%s' a '%s'\n", vecchioNome, nuovoNome);
return 0;
}
int cancellaFile(const char *nomeFile) {
remove(nomeFile);
printf("Il file '%s' e' stato eliminato con successo.\n", nomeFile);
return 0;
}
void copiaFileCaratterePerCarattere(const char* nomeFileOrigine, const char* nomeFileDestinazione) {
FILE* fileOrigine = fopen(nomeFileOrigine, "r");
if (fileOrigine != NULL) {
FILE* fileDestinazione = fopen(nomeFileDestinazione, "w");
if (fileDestinazione != NULL) {
int chr;
while ((chr = fgetc(fileOrigine)) != EOF) {
fputc(chr, fileDestinazione);
}
fclose(fileDestinazione);
} else {
perror("Error (destination)");
}
fclose(fileOrigine);
} else {
perror("Error (source)");
}
}
void pausa() {
system("pause");
system("dir");
system("pause");
}
void copiaPrimi100Caratteri(const char* nomeFileSorgente, const char* nomeFileDestinazione) {
FILE* fileSorgente = fopen(nomeFileSorgente, "r");
if (fileSorgente != NULL) {
FILE* fileDestinazione = fopen(nomeFileDestinazione, "w");
if (fileDestinazione != NULL) {
int chr;
for (int i = 0; i < 100; i++) {
chr = fgetc(fileSorgente);
fputc(chr, fileDestinazione);
}
fclose(fileDestinazione);
} else {
perror("Error (destination)");
}
fclose(fileSorgente);
} else {
perror("Error (source)");
}
}
aggiungiStringa(const char* nomeFile, const char* nome) {
FILE *fp = fopen(nomeFile, "at");
if (fp != NULL) {
fputs("\nBY: ", fp);
fputs(nome, fp);
fclose(fp);
} else {
perror("Error (source)");
}
}
int main() {
leggiFileCaratterePerCarattere("vmware.log");
pausa();
copiaFileCaratterePerCarattere("vmware.log", "copia.txt");
pausa();
cambiaNomeFile("copia.txt", "log.txt");
pausa();
cancellaFile("log.txt");
pausa();
copiaPrimi100Caratteri("vmware.log", "copia100.dat");
aggiungiStringa("copia100.dat", "Mario Montanari");
return 0;
}