PDA

View Full Version : [C] problema funzione in un prog che usa linked list


princess88
13-09-2008, 10:02
salve avrei un problema con un programma che realizza una lista..
posto solo le dichiarazioni e la funzione con cui ho problemi

typedef char data[20];
typedef struct nominativo{
data cognome;
int orario;};
typedef struct linked_list{
nominativo appuntamento;
struct linked_list *next;};
typedef struct linked_list element;
typedef element *link;

char cancellazione (link *nuovo,data valore)
{
link prec;
link punt;
link temp;

if( valore == ((*nuovo)->appuntamento.cognome) )
{

temp=*nuovo;
*nuovo=(*nuovo)->next;
free(temp);
return *valore;
}
else{

prec=*nuovo;
punt=(*nuovo)->next;
while( (punt != NULL) && ((punt->appuntamento.cognome) != valore))
{
prec=punt;
punt=punt->next;
}
if(punt!=NULL)
{
temp=punt;
prec->next=punt->next;
free(temp);
return *valore;
}
}
}

in effetti il problema è che la funzione non entra mai nel primo if anche quando la condizione è verificata.
Sono agli inizi e credo si veda :)
spero qualcuno mi aiuti, thanks.

vizzz
13-09-2008, 12:24
per il confronto di strighe devi usare la funzione strcmp o strncmp

princess88
13-09-2008, 12:44
ho provato anche così, ma mi sa che il problema sta nel richiamare il membro cognome del nodo.. perchè nell'if la funzione non entra proprio come se non trovasse l'uguaglianza tra "valore" e "(*nuovo)->appuntamento.cognome)".
Usando strcmp comunque non entra nell'if.

DanieleC88
13-09-2008, 14:08
Come lo usi strcmp()? Tieni presente che le stringhe a, b sono uguali se e solo se è strcmp(a, b) == 0.

ciao ;)

P.S.: alternativamente puoi dare un'occhiata a strcasecmp(), che fa lo stesso lavoro di strcmp(), ma non considerando la differenza maiuscole/minuscole.

princess88
13-09-2008, 14:14
ecco :doh:
grazie mille, ora si che funziona!!:cool:

DanieleC88
13-09-2008, 14:32
Di niente, è uno degli errori più comuni per chi inizia, dovevo precisare.

ciao ;)