#include <iostream>
#include <fstream>
#include <cstring>
#include "itoa.cpp"
using namespace std;
int main() {
char divString[100]; // la stringa che determina la divisione
char msgLine[10000]; // la linea del messaggio
char numString[5]; // il contatore convertito in stringa
char baseString[10]; // il prefisso dei nuovi file
char fileName[15]; // il nome completo del file
int counter = 1; // contatore per nomi dei file
//apro in input il file MBOX unico
ifstream mboxFile("sent", ios::in | ios::binary);
// apro in output un file di nome sent0, giusto per inizializzare
// newMboxFile
ofstream newMboxFile("sent0", ios:
ut | ios::binary);
// imposto divstring e basestring
strcpy(divString, "From
mioindirizzo@miodominio.it");
strcpy(baseString, "sent");
// comincia il ciclo principale...
do {
// ottengo la prima linea del file unico
mboxFile.getline(msgLine, sizeof msgLine);
// se trovo un'occorrenza di divstring nella linea estratta...
if(strstr(msgLine, divString)) {
newMboxFile.close(); // ... chiudo il file precedente
itoa(counter, numString, 10); // converto in stringa
strcpy(fileName, baseString); // aggiungo il prefisso
strcat(fileName, numString); // aggiungo il contatore
// apro un nuovo file che conterrà il nuovo messaggio
ofstream newMboxFile(fileName, ios:
ut | ios::binary);
cout << "Ho appena aperto lo stream " << fileName << ". Questi sono i bit di errore: " << newMboxFile.fail() << ", bad: " << newMboxFile.bad() << "\n";
counter++; // per differenziare i nomi dei file
}
cout << "\nDevo scrivere in " << fileName << ". Questi i bit di errore: " << newMboxFile.fail() << ", bad: " << newMboxFile.bad() << "\n";
newMboxFile.write(msgLine, sizeof msgLine);
} while (!mboxFile.eof()); //... sino a quando non arrivo ad eof()
cout << "\nMissione Completata!!"; // evvai!
return 0;
}