s***@hotmail.com
2005-07-14 15:30:39 UTC
Necesito saber si a alguno de vosotros le ha ocurrido algo parecido y
sabeis como arreglarlo: A mí no me había pasado hasta ahora...
Estoy usando un bucle while para realizar determinada accion sobre cada
uno de los nodos de una lista simplemente enlazada. La cuestión es que
si pongo un printf antes o después de avanzar al siguiente nodo o
incluso al entrar en el bucle, el bucle funciona correctamente, pero si
lo quito, ocurre fallo de puntero a nulo.
/* Así da error. De forma imprevisible se rompe el bucle. Además no
siempre se rompe en el mismo sitio*/
int funcion(...){
nodo * p;
p = lista; //puntero a primer nodo de la lista
while (p!=NULL){
if(....){
//no escribo el tratamiento
}
p=p->siguiente;
}
return OK;
}
/*Si pongo un simple printf , funciona el bucle correctamente*/
int funcion(...){
nodo * p;
p = lista; //puntero a primer nodo de la lista
while (p!=NULL){
if(....){
//no escribo el tratamiento
}
printf("\nSi lo pongo funciona\n");
p=p->siguiente;
}
return OK;
}
El bucle va también bien si se añade el printf después de avanzar
al nodo siguiente , dentro del bucle while o incluso antes de la
llamada a esta función.
¿Sabría alguien decirme qué hacer ?
Un saludo ,SONIA
sabeis como arreglarlo: A mí no me había pasado hasta ahora...
Estoy usando un bucle while para realizar determinada accion sobre cada
uno de los nodos de una lista simplemente enlazada. La cuestión es que
si pongo un printf antes o después de avanzar al siguiente nodo o
incluso al entrar en el bucle, el bucle funciona correctamente, pero si
lo quito, ocurre fallo de puntero a nulo.
/* Así da error. De forma imprevisible se rompe el bucle. Además no
siempre se rompe en el mismo sitio*/
int funcion(...){
nodo * p;
p = lista; //puntero a primer nodo de la lista
while (p!=NULL){
if(....){
//no escribo el tratamiento
}
p=p->siguiente;
}
return OK;
}
/*Si pongo un simple printf , funciona el bucle correctamente*/
int funcion(...){
nodo * p;
p = lista; //puntero a primer nodo de la lista
while (p!=NULL){
if(....){
//no escribo el tratamiento
}
printf("\nSi lo pongo funciona\n");
p=p->siguiente;
}
return OK;
}
El bucle va también bien si se añade el printf después de avanzar
al nodo siguiente , dentro del bucle while o incluso antes de la
llamada a esta función.
¿Sabría alguien decirme qué hacer ?
Un saludo ,SONIA