c y sus funciones 2ºparte XD
yo al implemetar las funciones en c realize algo como esto..
int localizar_posicion(struct nodo* tipo_lista, char nombres[25])
{
int *posicion;
int encontrado;
if (Lista_vacia(tipo_lista))
{
printf (..bla bla bla);
return 1;
}else{
posicion = Primer_elemento(tipo_lista);
encontrado = 0;
while (posicion != Fin_lista(tipo_lista) &
(encontrado != 1))
{
(*) if(strcmp(nombres,
Recupera_informacion(tipo_lista,
posicion))<0)
posicion = siguiente_lista
(tipo_lista,posicion);
else encontrado = 1;
}
return posicion;
// posicion es un puntero
//y es local. aunque se le pasa un
//parametro no local.
}
}
y aqui por ejemplo .no me acepta la comprovacion del if de (*) , si lo hace con el primer if que verifica si la lista esta vacia. si es el caso de no utilizar srtcmp (cosa extraña ) tambien lo hago del modo antiguo..osea a seco sin hacer uso de las funciones de c. y aun asi me sigue generando el mismo error.
alguna sugerencia?????
el error es que me dice que no debo comparar un puntero con un entero ,...
este me sale cuando valido el valor devuelto de una funcion dentro de un if con un puntero.
por cierto como se hace entonces para que una funcion devuelva un puntero......
sera aacaso
int *funcion_loquesea(struct nodo *blablal, int *pepito)
o acaso ... int funcion_loquesea(struct nodo *blalal, int * pepito)
{
int * posicion;
.....
....
return posicion;
}
pero posicion es un puntero y la funcion esta devolviendo un entero!!!! entonces como hago.
en un mensaje anterior se me dijo que debia usar variablñes locales y dentro de estas usar punteros locales ..y eso es lo que hago como vereis en el ejemplo de arriba ...y a tales`punteros les paso el valor de los punteros que recive la funcion ...pero aun asi cuando ,,pongo la funcion en un if ...me genera el error que yo os comente.. alguna idea..
y por favor me la podrian dar con un ejemplo.
gracias.
int localizar_posicion(struct nodo* tipo_lista, char nombres[25])
{
int *posicion;
int encontrado;
if (Lista_vacia(tipo_lista))
{
printf (..bla bla bla);
return 1;
}else{
posicion = Primer_elemento(tipo_lista);
encontrado = 0;
while (posicion != Fin_lista(tipo_lista) &
(encontrado != 1))
{
(*) if(strcmp(nombres,
Recupera_informacion(tipo_lista,
posicion))<0)
posicion = siguiente_lista
(tipo_lista,posicion);
else encontrado = 1;
}
return posicion;
// posicion es un puntero
//y es local. aunque se le pasa un
//parametro no local.
}
}
y aqui por ejemplo .no me acepta la comprovacion del if de (*) , si lo hace con el primer if que verifica si la lista esta vacia. si es el caso de no utilizar srtcmp (cosa extraña ) tambien lo hago del modo antiguo..osea a seco sin hacer uso de las funciones de c. y aun asi me sigue generando el mismo error.
alguna sugerencia?????
el error es que me dice que no debo comparar un puntero con un entero ,...
este me sale cuando valido el valor devuelto de una funcion dentro de un if con un puntero.
por cierto como se hace entonces para que una funcion devuelva un puntero......
sera aacaso
int *funcion_loquesea(struct nodo *blablal, int *pepito)
o acaso ... int funcion_loquesea(struct nodo *blalal, int * pepito)
{
int * posicion;
.....
....
return posicion;
}
pero posicion es un puntero y la funcion esta devolviendo un entero!!!! entonces como hago.
en un mensaje anterior se me dijo que debia usar variablñes locales y dentro de estas usar punteros locales ..y eso es lo que hago como vereis en el ejemplo de arriba ...y a tales`punteros les paso el valor de los punteros que recive la funcion ...pero aun asi cuando ,,pongo la funcion en un if ...me genera el error que yo os comente.. alguna idea..
y por favor me la podrian dar con un ejemplo.
gracias.
No entiendo muy bien el codigo, pero te cuento:
Un puntero a entero es un puntero a entero, asi que si quieres puntero a entero, ponlo asi en todos lados
int *funcion (...)
{
int *posicion;
pocision = malloc();
return posicion;
}
Lo que devuelve esto no puedes usarlo en un array
tabla [funcion()]
no vale, puesto que el puntero no es un entero. Deberias poner
tabla [*funcion()]
Salvo que haya algún motivo, para enteros mi consejo es que no uses punteros. Es más sencillo (y mas seguro)
int funcion (...)
{
int posicion;
posicion = 33;
return posicion;
}
Para darte mas detalles, habría que ves exactamente todas las funciones que tienes estilo Lista_Vacia(), Primer_Elemento() para saber que tipos has puesto.
Se bueno.
Un puntero a entero es un puntero a entero, asi que si quieres puntero a entero, ponlo asi en todos lados
int *funcion (...)
{
int *posicion;
pocision = malloc();
return posicion;
}
Lo que devuelve esto no puedes usarlo en un array
tabla [funcion()]
no vale, puesto que el puntero no es un entero. Deberias poner
tabla [*funcion()]
Salvo que haya algún motivo, para enteros mi consejo es que no uses punteros. Es más sencillo (y mas seguro)
int funcion (...)
{
int posicion;
posicion = 33;
return posicion;
}
Para darte mas detalles, habría que ves exactamente todas las funciones que tienes estilo Lista_Vacia(), Primer_Elemento() para saber que tipos has puesto.
Se bueno.
