13/05/13 13:43
ale.gatti96
Quando passi un array passi il puntatore al suo primo elemento e poi la funzione opera direttamente sul vettore originale e non su una copia, quindi non deve ritornare nessun valore --> void
Scrivi la funzione così:
Scrivi la funzione così:
void input(char testo[100]){ fgets(testo,100,stdin); }
aaa
13/05/13 14:57
ale.gatti96
Allora il problema è nel resto del sorgente. Posta tutte le 150 righe
aaa
13/05/13 15:03
spaces
Non è nel resto del codice poichè se al posto della gets inserisco una scanf funziona perfettamente. Ho però bisogno di poter inserire nel testo anche spazi quindi la scanf non fa al caso mio.
aaa
13/05/13 15:08
ale.gatti96
Ma quella funzione è corretta, se eseguo questo codice funziona alla perfezione:
Quindi posta tutto, altrimenti non so come aiutarti.
void input(char testo[100]){ fgets(testo,100,stdin); } int main(){ char testo[100]; input(testo); printf("%s",testo); getch(); return 0; }
Quindi posta tutto, altrimenti non so come aiutarti.
aaa
13/05/13 15:18
spaces
L'ho miracolosamente sistemato senza toccare la funzione bo!
Comunque ho basato la mia ricerca sul tuo modello ma dice in ogni caso che la parola non è stata trovata.
Comunque ho basato la mia ricerca sul tuo modello ma dice in ogni caso che la parola non è stata trovata.
void ricerca(char testo[100], char p[10]){ //Funzione per la ricerca della parola nel testo int i; //Indice int j; //Indice int lp; char a; int t; for(lp=0; p[lp]!='L'ho miracolosamente sistemato senza toccare la funzione bo!
Comunque ho basato la mia ricerca sul tuo modello ma dice in ogni caso che la parola non è stata trovata.void ricerca(char testo[100], char p[10]){ //Funzione per la ricerca della parola nel testo int i; //Indice int j; //Indice int lp; char a; int t; for(lp=0; p[lp]!='{parsed_message}'; lp++) for(i=0; i<lp && !t; i++){ a=testo[i]; if(a==p[j]) j++; else{ j=0; if(a==p[0]) j++; } if(j==lp-1) t=1; } if(t==1) printf("\nParola trovata\n"); else printf("\nParola NON trovata\n"); }'; lp++) for(i=0; i<lp && !t; i++){ a=testo[i]; if(a==p[j]) j++; else{ j=0; if(a==p[0]) j++; } if(j==lp-1) t=1; } if(t==1) printf("\nParola trovata\n"); else printf("\nParola NON trovata\n"); }
aaa
13/05/13 16:14
ale.gatti96
C'era un bug nel codice che ti ho scritto prima: è "if(j==lp)" e non "if(j==lp-1)" perché altrimenti anche se non c'è l'ultima lettera dice che trova la parola lo stesso.
Comunque così funziona:
Comunque così funziona:
void ricerca(char testo[100], char p[10]){ int i, j=0, lp, t=0; char a; for(lp=0; p[lp]!='C'era un bug nel codice che ti ho scritto prima: è "if(j==lp)" e non "if(j==lp-1)" perché altrimenti anche se non c'è l'ultima lettera dice che trova la parola lo stesso.
Comunque così funziona:void ricerca(char testo[100], char p[10]){ int i, j=0, lp, t=0; char a; for(lp=0; p[lp]!='{parsed_message}'; lp++); for(i=0; (a=testo[i])!='{parsed_message}' && !t; i++){ if(a==p[j]) j++; else{ j=0; if(a==p[0]) j++; } if(j==lp) t=1; } if(t==1) printf("\nParola trovata\n"); else printf("\nParola NON trovata\n"); }'; lp++); for(i=0; (a=testo[i])!='C'era un bug nel codice che ti ho scritto prima: è "if(j==lp)" e non "if(j==lp-1)" perché altrimenti anche se non c'è l'ultima lettera dice che trova la parola lo stesso.
Comunque così funziona:void ricerca(char testo[100], char p[10]){ int i, j=0, lp, t=0; char a; for(lp=0; p[lp]!='{parsed_message}'; lp++); for(i=0; (a=testo[i])!='{parsed_message}' && !t; i++){ if(a==p[j]) j++; else{ j=0; if(a==p[0]) j++; } if(j==lp) t=1; } if(t==1) printf("\nParola trovata\n"); else printf("\nParola NON trovata\n"); }' && !t; i++){ if(a==p[j]) j++; else{ j=0; if(a==p[0]) j++; } if(j==lp) t=1; } if(t==1) printf("\nParola trovata\n"); else printf("\nParola NON trovata\n"); }
aaa