Dark_Limit (Ex-Member)
Expert
Messaggi: 220
Iscritto: 15/01/2008
|
Ciao..Ma se invece di trovare una parola dovrei trovare ad esempio: "@ciao" ed estrapolare da questa parola solo la stringa ciao è fattibile allo stesso modo?
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Postato originariamente da Dark_Limit:
Ciao..Ma se invece di trovare una parola dovrei trovare ad esempio: "@ciao" ed estrapolare da questa parola solo la stringa ciao è fattibile allo stesso modo? |
Se tu dovessi (attenzione alla congiuntivite ...) trovare "@ciao" ... in che senso?
Con un qualsiasi carattere prima della parola o proprio con quella ?
In ogni caso, puoi leggere la parola e, se e' piu' lunga di un carattere, confrontala con quella che cerchi a partire dal secondo ... |
|
Dark_Limit (Ex-Member)
Expert
Messaggi: 220
Iscritto: 15/01/2008
|
Si scusami mi sono spiegato male..Cerco di spiegarmi meglio. Mettiamo che io ho un file di testo con all'interno questa stringa "ciaocomestai?"..posso fare un programma che legge solo la parola "come" e lascia perdere le altre?
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
io ho pensato una cosa cosi:
se la parola da cercare è "ciao" nella stringa "ciaocomestai", con la funzione strstr si ottiene la prima posizione di un carattere nella stringa(nel nostro caso cerchiamo "c" nella stringa ciaocomestai cioè 1 )e poi verificare se nell'insieme con le seguenti parole a quella trovata("c") otteniamo la parola "ciao".
Non so se mi sono spiegato...
|
|
Dark_Limit (Ex-Member)
Expert
Messaggi: 220
Iscritto: 15/01/2008
|
Per ottenere le altre lettere uso la funzione gets() dentro un ciclo while che non esce fino a che il file non ha raggiunto la fine? dicevi una cosa di questo tipo?
Ultima modifica effettuata da Dark_Limit il 26/01/2008 alle 15:56 |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Beh ... se cambi le specifiche del problema, ovviamente non va piu' bene la soluzione che ti ho dato prima ...
Dovresti porre il problema INTERAMENTE sin dall'inizio ... cosi' si fa prima in meno tempo ... no?
Ovviamente, se NON esiste modo per il programma di distinguere tra le parole (dato che non sono separate da almeno uno spazio), dovrai leggere l'intera linea (spero che abbia una dimensione massima, che so, al massimo 512 caratteri ...) in un buffer ed usare la
strstr
cosi' come ti e' stato suggerito ...
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
prova questo codice che controlla se in una stringa è presente una parola:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <string.h> #include <windows.h> int main() { char txt[1024]={'0'}; char psearch[1024]={'0'}; char buffer[1000]={'0'}; char *c; int i, len, v; v = 0; strcpy(psearch,"prova");//stringa da cercare all'interno di stringa di prova strcpy(txt,"stringadiprova"); len = strlen(psearch); c = strstr(txt,"p"); c++; for (i=0; i<(len-1);i++,c++) { if (*c != psearch[i+1])v = 1;break; //esce dal ciclo se non trova parole uguali altrimenti continua } strcpy(buffer,"la parola "); if (v==1) sprintf(buffer,"%s %s,%s,%s","la parola",psearch, "non è presente in ", txt); printf(buffer); system("Pause"); }
|
Ultima modifica effettuata da Overflow il 26/01/2008 alle 16:46 |
|
Dark_Limit (Ex-Member)
Expert
Messaggi: 220
Iscritto: 15/01/2008
|
Si allora il mio problema è quello di cercare una sequenza di caratteri che corrisponda ad una parola e come ai detto tu 'Gantonio' siccome non si può distinguere perchè fra di esse non ci sono spazi mi hai consigliato di leggere riga per riga il file...dovrei fare insomma tipo una ricerca in un file molto simile a quella che hanno i più comuni editor di testo attuali ( vedi notepad , word,openoffice...) si può fare leggendo il file riga per riga ma non so come isolare tale stringa da tutto il resto del testo..cioè una volta che ho letto la stringa cosa faccio? grazie mille.!!
|
|