ciao avrei un problema,
devo implementare un programma che dato un file A stampi su un file index.txt tutte le parole presenti nel file A col seguente formato *parola1*parola2* scrivendo la parola su index solo se non l ho gia scritto
chiarisco con un esempio
file A:
ciao luca come stai
ciao matteo come stai
io bene ciao ciao ciao
file index(contiene tutte le parole presenti in file A senza i doppioni):
*ciao*luca*come*stai*matteo*io*bene*
vi spiego il mio problema,devo implementare il programma con due vincoli
1)non devo modificare il file A
2)deve essere OTTIMO come tempo di esecuzione il programma anche s un file di testo lungo
vi dico la mia soluzione che pero non reputo ottima
-uso una stringa di appoggio molto lunga che chiamo CNT
-leggo una parola alla volta dal file(eliminando opportunatamente spazi e caratteri di punteggiatura)
-la prima parola che leggo la scrivo dentro CNT con '*' prima e dopo--> *parola*
-continuo a leggere le parole dal file A una dopo l altra e tramite strstr controllo se *parola* letta è contenuta in CNT se non è contenuta la concateno a CNT .(QUESTA FASE E' QUELLA CHE REPUTO LA PIU ONEROSA IN QUANTO STRSTR SCORRE TUTTA LA STRINGA CNT ,CHE E' MOLTO LUNGA IN QANTO CONTIENE LE PAROLE DEL FILE,E IN PIU L OPERAZIONE DI CONCATENAMENTO)
-finito di leggere tutto il file A,CNT conterrà *parola1*parola2*...* cioè tutte le parole (NON DOPPIONI)separate da *. A questo punto stampo la stringa CNT sul file index.txt
avete in mente una soluzione migliore??
vi ringrazio gia in anticipo,spero di essere stato chiaro vi aggiungo uno pseudocodice della mia soluzione
//leggo prima parola del file
//sprintf su CNT di *parola*
//WHILE(NON E' FINITO IL FILE)
//LEGGO PAROLA
// STRSTR(CNT,*PAROLA*
//SE NON è CONTENUTA IN CNT CONCATENO *PAROLA* CON CNT USANDO L APPOSITA FUNZIONE DI STRING.H
//ALLA FINE FPRINTF(INDEX.TXT,CNT);