Oppure

Loading
29/05/07 14:23
buffalo_overflw
Salve a tutti, sto implementando un programma in ansi C che trova la ricorrenza di una stringa all'interno di un'altra stringa (importata da un file di testo): se la trova deve sostituirla con una terza stringa; ho gia' scritto la parte relativa alla ricerca della ricorrenza, non so come implementare la parte della sostituzione.I dati che ho sono: il testo da file, l'indice iniziale dove comincia la ricorrenza e la terza stringa che va a sostituire; esiste una funzione di string.h che effettui tale operazione? Grazie in anticipo
aaa
30/05/07 13:28
4x4lu5
allora vediamo se ho capito :)
chiamiamo la stringa iniziale(ql lunga in cui cambiare le parole) str1
la stringa da cercare str2
la stringa da mettere str3
fai 1 copia di str1 che scorrerai x riscrivere str1, la chiamo str11

pulisci str1 cn 1 memset
scorri str11, ogni carattere va riscritto su str1, si fa 1 controllo su ogni carattere e il primo di str2, qnd si trova si controlla se il carattere successivo è ql di str2 altrimenti si riparte dal primo, se invece i caratteri ci sono tutti si torna indietro con il puntatore (di str1) e si scrive la str3 poi si riprende a fare le stesse cose, in pseudocodice tipo:

e=continua=0;
for (i=0;i<strlen(str11);i++,c++)
{
str1[c]=str11 [ i ];
if ( str11 [ i ] ==str2[e])
{
continua++;
e++;
if (continua==strlen(str2)-1)
{
int p;
c=c-strlen(str2);
for(p=0;p<strlen(str3)-1;p++,c++)
{
str1[c]=str3[p];
}
}
}
else
{continua=0;
e=0;
}


}


tipo 1 roba del genere, SPERO... skusami se ho scritto x caso qlk strafalcionata, nn ho modo qui di compilarlo e scrivere codice su 1 foglio nn mi ha mai dato troppe soddisfazioni qndi ricorda che qst vuol essere + 1 idea x aiutarti a risolvere il tuo problema che la soluzione gia scritta :)
ciao
Ultima modifica effettuata da 4x4lu5 30/05/07 13:31
aaa
30/05/07 13:42
buffalo_overflw
grazie mille del consiglio :)... io la ricerca e la sostituzione li avevo impostati come problemi distinti (avendo gia' implementato il ciclo del primo)... ma direi che cosi' e'estremamente piu' razionale e meno "costoso" in termini di complessita'. A buon rendere (sperando di esserne all'altezza) ;-)
aaa
29/06/07 18:00
4x4lu5
:k: Sempre 1 Piacere ::D
aaa