• Non ci sono risultati.

Prova pratica del 18/1/08 (secondo turno)

N/A
N/A
Protected

Academic year: 2022

Condividi "Prova pratica del 18/1/08 (secondo turno)"

Copied!
1
0
0

Testo completo

(1)

Prova pratica del 18/1/08 (secondo turno)

Una delle operazioni più comuni che molti programmi devono implementare è la ricerca di parole o frasi all'interno di dati testuali. A tal fine la libreria del C fornisce già alcune funzioni predefinite. In particolare, la funzione char *strstr(char *data, char

*sub) permette di ricercare l'esistenza della sottostringa sub all'interno della stringa data;

strstr() restituisce l'indirizzo di memoria dove viene trovata la stringa sub oppure NULL nel caso questa non venga trovata. Purtroppo la strstr() non è utilizzabile qualora i dati su cui effettuare la ricerca non possano essere interamente caricati in memoria.

Sviluppare una funzione con prototipo long fstrstr(char *filename, char

*sub) che ricerchi all'interno del file testuale di nome filename la stringa sub. La funzione restituisce la posizione della prima occorrenza della stringa sub all'interno del file qualora la ricerca abbia esito positivo, oppure -1 nel caso la stringa sub non venga

rinvenuta. La stringa da ricercare puo' contenere spazi e deve trovarsi tale e quale all’interno del file, spazi inclusi.

Si utilizzi la seguente strategia: ipotizzando che la lunghezza della stringa sub sia n, si carichino in memoria i primi n caratteri del file e si effettui un confronto; qualora questo confronto sia negativo, si aggiornino gli n caratteri eliminando il primo e leggendone un altro dal file. Il ciclo termina o quando il confronto dà esito positivo o quando si raggiunge la fine del file.

La funzione fstrstr() non deve avvalersi di variabili globali, deve aprire e chiudere il file una e una sola volta e non deve effettuare operazioni di seek all'interno del file. Si integri la funzione in un programma che mostri un esempio di utilizzo della fstrstr(),

richiedendo all'utente di inserire una stringa da ricercare e verificandone la presenza all’interno di un file di nome testo.txt.

Esempio d’uso:

File testo.txt

I tre fuggitivi approdano sulla sponda del lago opposta a Pescarenico e si accomiatano dal barcaiolo che li aveva trasportati. Guidati poi da un barocciaio, i tre giungono fino a Monza su di un carro. Qui possono riposarsi e rifocillarsi in una locanda. Dopo un breve pasto Renzo da' l'addio alle due donne. Sempre sotto la guida del barocciaio, le due donne si recano prima al convento dei cappuccini e poi, accompagnate dal

padre guardiano, al monastero di monache nel quale sperano di trovare ospitalita'. Il frate chiede per loro la protezione di Gertrude, una suora di nobile e potente famiglia.

Input

convento dei cappuccini

Output

La stringa si trova nel file alla posizione 379

Riferimenti

Documenti correlati

È proprio a questo livello che si inserisce ed acquista interesse l’elaborato di tesi: si studierà la dinamica di una stringa elementare in maniera consistente con la

C'e' una condizione da rispettare nel passaggio di testimone: Prima che un atleta di un gruppo possa fare il suo (n+1)-esimo giro bisogna che tutti gli altri atleti del suo

Si considera un array monodimensionale di nome count[] di cardinalità 26, pari al numero delle lettere minuscole: ciascun elemento dell’array corrisponde ad una lettera secondo

aS aaS aaaS aaaCbC aaacCbC aaaccbC aaaccbS aaaccbaS aaaccbaaS aaaccbaa.

/* La funzione strstr restituisce la posizione della prima occorrenza della stringa puntata da refstr nella stringa puntata da line; se la seconda stringa non è contenuta nella

cost = 20; // estero ancora più

cost = 10; // Hawaii più costoso else // NON FUNZIONA. cost = 20; // estero ancora

cost = 20; // estero ancora più