| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  25-01-2008, 16:13 | #1 | 
| Senior Member Iscritto dal: Jul 2007 Città: Cassano M.go (Va) 
					Messaggi: 631
				 | 
				
				[C] Qualcuno sa risolvere l'errore?
			 
		In qst funzione: Codice: /*funzione chiamata dalla inserisci(char*u)*/
nodo*insert_in_albero(nodo*p,char*u){
        int x=strlen(u);                      
        if (p==NULL){
      /*riservo uno spazio per nodo*/                
        p=(nodo*)malloc( sizeof(nodo));
        if(!p){
          printf("Errore di allocazione\n");
          }
                        
        else{
          p->parola= strdup(u); /*copia la stringa u nella sringa p->parola*/
          p->lung_parola=strlen(p->parola); /*prendi la lunghezza della stringa
                                                        p->parola e metti nel campo p->lung_parola*/ 
          p->left=p->right=NULL;
          q=p;
          return p;
        }
        }
              if(strcmp(u,p->parola)<0){            /*se u è lessicograficamente minore di p->parola 
                                                               inseriscilo a sinistra*/
               p->left=insert_in_albero(p->left,u);
               return p;
              }
                                                                                         
                   else if(strcmp(u,p->parola)>0){ /*altrimenti inseriscilo a destra*/
                                   
                                    p->right=insert_in_albero(p->right,u);
                                    return p;
                                                 }                   
                        else {
                                  printf(" %s è una parola già inserita\n",p->parola);
                                   system("PAUSE");
                                   p->parola=u;
                                 return p;
                               }
                      }mi da un errore in qst riga: p->parola= strdup(u);/*copia la stringa u nella sringa p->parola*/ dicendomi: [Warning] assignment makes pointer from integer without a cast come risolvo? Ultima modifica di Fabietto206 : 27-01-2008 alle 15:35. | 
|   |   | 
|  25-01-2008, 16:23 | #2 | 
| Member Iscritto dal: Oct 2004 
					Messaggi: 98
				 | 
		parola l'hai dichiarato come char* ? la stringa u da dove l'acquisisci? | 
|   |   | 
|  25-01-2008, 19:54 | #3 | |
| Senior Member Iscritto dal: Jul 2007 Città: Cassano M.go (Va) 
					Messaggi: 631
				 | Quote: 
 u è un parametro della funzione invece!! Cmq la stringa la inserisco cn la seguente funzione: Codice: /*funzione di inserzione di una parola nell'albero*/
void inserisci(char*u){
    q=insert_in_albero(q,u);
    
     }Ultima modifica di Fabietto206 : 27-01-2008 alle 15:32. | |
|   |   | 
|  27-01-2008, 15:36 | #4 | 
| Senior Member Iscritto dal: Jul 2007 Città: Cassano M.go (Va) 
					Messaggi: 631
				 | 
		Nessuno sa aiutarmi?
		 | 
|   |   | 
|  27-01-2008, 17:08 | #5 | 
| Senior Member Iscritto dal: Dec 2005 
					Messaggi: 7258
				 | 
		prova a usare strcpy o ancora meglio strncpy specificando un limite massimo di caratteri da copiare che dipende dallo spazio che hai allocato per la variabile in cui copi la stringa.
		 Ultima modifica di k0nt3 : 27-01-2008 alle 17:16. | 
|   |   | 
|  27-01-2008, 17:29 | #6 | 
| Senior Member Iscritto dal: Jul 2007 Città: Cassano M.go (Va) 
					Messaggi: 631
				 | |
|   |   | 
|  27-01-2008, 17:38 | #7 | 
| Senior Member Iscritto dal: Dec 2005 
					Messaggi: 7258
				 | 
		
strcpy copia il contenuto di una stringa in un'altra stringa. la sua signature è: char *strcpy(char *destination, const char *source) ora.. ci sono dei problemi se la stringa sorgente è più grande della memoria allocata per la stringa destinazione, quindi è meglio usare strncpy: char *strncpy(char *destination, const char *source, size_t n); dove "n" è il numero massimo di caratteri da copiare. ma tu non allochi memoria per la variabile parola vero?   | 
|   |   | 
|  27-01-2008, 21:46 | #8 | |
| Senior Member Iscritto dal: Jul 2007 Città: Cassano M.go (Va) 
					Messaggi: 631
				 | Quote: 
 | |
|   |   | 
|  28-01-2008, 11:50 | #9 | |
| Senior Member Iscritto dal: Dec 2005 
					Messaggi: 7258
				 | Quote: 
 dichiara la struct in maniera simile a questa: Codice: typedef struct nodo
{
    char* parola;
    int lung_parola;
    struct nodo *left, *right;
} nodo; | |
|   |   | 
|  28-01-2008, 13:00 | #10 | 
| Senior Member Iscritto dal: Jul 2007 Città: Cassano M.go (Va) 
					Messaggi: 631
				 | 
		
è già dikiarato così....se vuoi ti posso mandare il codice così vedi x bene...
		 | 
|   |   | 
|  28-01-2008, 13:01 | #11 | 
| Senior Member Iscritto dal: Dec 2005 
					Messaggi: 7258
				 | |
|   |   | 
|  28-01-2008, 14:37 | #12 | 
| Senior Member Iscritto dal: Jul 2007 Città: Cassano M.go (Va) 
					Messaggi: 631
				 | 
		Ho fatto così: Codice: /*variabili globali */
typedef struct nodo_albero nodo;
    nodo*q=NULL;
   
    nodo*t=NULL;
   
    char *s;
     
char nom[ARRASIZE];
FILE* fp;
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  @      INIZIO FILE .h               @
  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/*struttura di un nodo dell'albero*/
struct nodo_albero{
       char*parola;
       int lung_parola;
       struct nodo_albero*left;
       struct nodo_albero*right;
       
       }; | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 12:20.









 
		 
		 
		 
		







 
  
 



 
                        
                        










