Oppure

Loading
13/05/13 13:21
spaces
E' molto lungo il programma oltre 150 righe ma la funzione per l'input è questa:
char input(char testo[100])
{ 
                       fgets(testo,100,stdin);  
                       return(0);
                       }


anche con la gets normale non funziona.
aaa
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ì:
void input(char testo[100]){
   fgets(testo,100,stdin);
}
aaa
13/05/13 14:16
spaces
Già provato non cambia di una virgola.. non capisco dove sia il problema.
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:
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.
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:
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