Buon giorno, devo risolvere questo esercizio ma da giorni non riesco a venirne a capo.
Un file (sorgente.txt) contiene un testo composto da un numero indefinito di righe, di lunghezza massima 200 caratteri ognuna. Un secondo file (dizionario.txt) contiene un elenco di coppie di stringhe. Il file dizionario.txt è organizzato come segue:
? sulla prima riga è presente un numero intero e positivo S (= 30), che indica il numero di possibili ricodifiche (sostituzioni) presenti nel dizionario
? seguono S coppie <compresso><originale> a rappresentare le sostituzioni possibili. Ogni sostituzione <compresso> è nella forma $<intero>$
Lo scopo del programma è di ricodificare il primo file di testo andando a sostituire sequenze di caratteri sulla base dei contenuti del secondo file. In caso di più sostituzioni possibili per una certa sottostringa, il programma scelga la prima sostituzione trovata. Il risultato della ricodifica sia salvato su un terzo file (ricodificato.txt).
Se qualcuno riuscisse a trovare l'errore e a spiegarmi dove sbaglio ve ne sarei grato.
Grazie in anticipo
int main()
{
FILE* fdamodificare;
fdamodificare = fopen("sorgente.txt","r");
FILE* fdizionario;
fdizionario = fopen("dizionario.txt","r");
FILE* frisultante;
frisultante = fopen("filerisultante.txt", "w");
char paroladizionario2[30];
char codificadizionario2[5];
char parolasorgente[30];
int i =0 , j = 0, k = 0;
while(fscanf(fdizionario, "%s %s", codificadizionario2, paroladizionario2)==2)
{
while(fscanf(fdamodificare, "%s", parolasorgente)!=EOF)
{
if(paroladizionario2[i]==parolasorgente[j])
{
if(strlen(paroladizionario2)==(i+1))
{
for(k = 0; k<strlen(codificadizionario2); k++)
{
fputc(codificadizionario2[k], frisultante);
}
}
else
{
i++;
j++;
}
}
else
{
fputc(parolasorgente[j], frisultante);
j++;
}
}
}
fclose(fdamodificare);
fclose(fdizionario);
fclose(frisultante);
return 0;
}