|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#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. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2004
Messaggi: 98
|
parola l'hai dichiarato come char* ?
la stringa u da dove l'acquisisci? |
|
|
|
|
|
#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. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
|
Nessuno sa aiutarmi?
|
|
|
|
|
|
#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. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
|
|
|
|
|
|
|
#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?
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
|
Quote:
|
|
|
|
|
|
|
#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;
|
|
|
|
|
|
|
#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...
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7258
|
|
|
|
|
|
|
#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: 21:14.




















