/* 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: ” + “” in una nuova linea (controllare con hexed). */ #include #include #include 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; }