Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    26

    [C] problema controllo if

    ho un problema con un programma.. c'è una funzione che non funziona correttamente..questa funzione non mi effettua il secondo if e non riesco a capire il motivo... mi restituisce sempre l'ultimo return NULL anche se si verifica quell'uguaglianza... qualcuno mi può aiutare?

    questo è il codice:
    codice:
    int getString (int identifier)
    {
        int i;
        StringPool *ptr;
              
        if(identifier<0) return NULL;
        else{
        i=0;
        while(i<DIMENSIONE_VETTORE){
        if(sp[i].identificatore == identifier){
        ptr->foundPos = i;
        return sp[i].stringa;}
        else i++;}
        if(i >= DIMENSIONE_VETTORE -1) return NULL;}
    }

  2. #2

    Re: [C] problema controllo if

    Originariamente inviato da annam90
    codice:
        ptr->foundPos = i;
    Tralasciando tutto il resto, direi che stai usando un'area di memoria non allocata. E non capisco il senso visto che poi quel puntatore esce dallo scope...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    26
    l'ho usato perchè foundPos è un campo di un vettore di tipo struttura ed è più comodo raggiungerlo col puntatore..

    comunque il problema non è tanto in quella funzione, quanto in questa, in cui getString viene richiamata:

    codice:
    int rimuovere (int identifier) 
    {
        int i;
        StringPool *ptr;
        
        if(getString(identifier) != NULL){
        sp[ptr->foundPos].identificatore = -1;
        strcpy(sp[ptr->foundPos].stringa, "");
        return SUCCESS2;}
        else{if(identifier <= 0) return ID_NOT_VALID2;
        else return ID_NOT_FOUND;}
    }
    mentre in un'altra funzione in cui viene chiamata getString non dà nessun problema..solo in questa.
    comunque ho modificato anche getString così:

    codice:
    int getString (int identifier)
    {
        int i;
        StringPool *ptr;
        
        if(identifier <= 0 ) return NULL;
        else{
        for(i=0;i<DIMENSIONE_VETTORE;i++){
        if(sp[i].identificatore == identifier) return sp[i].stringa;
        else if(i == DIMENSIONE_VETTORE -1) return NULL;}}
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    26
    il problema penso sia anche foundPos..dato che è un campo di una struttura, come posso passarlo in modo corretto alle funzioni?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.