C, Problema con il RETURN

di il
2 risposte

C, Problema con il RETURN

Ciao a tutti...volevo un aiuto con questa funzione.
Allora la funzione in questione lavora su un albero di stringhe e, data una stringa in input, restituisce il nodo a cui la stringa é presente.
il mio problema si presenta quando la stringa data in input non é presente nell'albero....non so come impostare il return di quel caso per far si che non mi dia errore di segmentazione.
Vi posto il codice della funzione in questione qui sotto:
typedef struct _node{

  char *key;

  struct _node *left;

  struct _node *right;

} node;


node* find(node *tree, char *input){

  if(tree==NULL) return; //CASO IN CUI CHIEDO AIUTO

  if(strcmp(tree->key, input)==0){

    printf("Hai trovato la stringa\n");

    return tree;

  }

  else{

    if(strcmp(tree->key, input)>0){

      printf("Vado a sx\n");

      return find(tree->left, input);

    }

    else{ 

      printf("Vado a dx\n");

      return find(tree->right, input);

    }

  }

}
Grazie a tutti in anticipo per l' aiuto!!!

2 Risposte

  • Re: C, Problema con il RETURN

    Potresti restituire NULL con

    return NULL;

    e controllare il valore restituito quando fai la ricerca.
  • Re: C, Problema con il RETURN

    Scusate era veramente un problema scemo...avevo gia prvato con il return NULL;
    Praticamente il problema era che nel main, a prescindere dal risultato della find stampavo il campo key, senza prima testare con un IF se essa avesse resituito un NULL.
    Grazie lo stesso per l aiuto!!!!
Devi accedere o registrarti per scrivere nel forum
2 risposte