Ayuda con esta funcion
Publicado por sism (1 intervención) el 28/08/2004 19:27:47
char* leerItem(char **stri)
{
TIPO_INFO_PILA meka, ext5;
int i=0;
while(*(*(stri)+i)!=\' \')
{
/*punto A*/
*(meka + i)=*(*(stri)+i);
/*punto B*/
i++;
}
meka[i]=\'\\0\';
*stri=*stri + i+1;
return meka;
}
Buenas, buenas tengo definida esta funcion para recibir una cadena, poner en la cadena devuelta todo hasta el primer espacio, y modificar la cadena recibida kitando lo ke has puesto en la otra.Y funciona, funciona perfectamente. Pero esta funcion la utilizo en otra para evaluar expresiones sufijo (del estilo 4 3 + ) , con una estructura de datos de tipo PILA (ke esta perfectamente definida, con el Pop , el push y demas funcionanado perfectamente) El caso es ke cuando llamo a la funcion en la funcion de evaluar:
while((strcmp(it=leerItem(&cadena), \";\")!=0))
{
if(esOperando(it, &pila) != NO)
{
if (Push(&it, &pila)==ERROR)
{
LiberaPila(&pila);
return ERROR;
}
/*luego continuaria conlos pops, etc..*/
La funcion leerItem, entre los puntos ke he señalado A y B, modifica los elementos de la pila (lo he comprobado imprimiendo el ultimo y el penultimo elemento de la pila justo en esos puntos, y cambia) .Pone en todos los elementos de la pila el ultimo elemento ke ha leido.Me parece extrañisimo, ya que la funcion leerItem no toca para nada la pila, a ver si alguien puede ayudarme, que estoy hecho un lio
{
TIPO_INFO_PILA meka, ext5;
int i=0;
while(*(*(stri)+i)!=\' \')
{
/*punto A*/
*(meka + i)=*(*(stri)+i);
/*punto B*/
i++;
}
meka[i]=\'\\0\';
*stri=*stri + i+1;
return meka;
}
Buenas, buenas tengo definida esta funcion para recibir una cadena, poner en la cadena devuelta todo hasta el primer espacio, y modificar la cadena recibida kitando lo ke has puesto en la otra.Y funciona, funciona perfectamente. Pero esta funcion la utilizo en otra para evaluar expresiones sufijo (del estilo 4 3 + ) , con una estructura de datos de tipo PILA (ke esta perfectamente definida, con el Pop , el push y demas funcionanado perfectamente) El caso es ke cuando llamo a la funcion en la funcion de evaluar:
while((strcmp(it=leerItem(&cadena), \";\")!=0))
{
if(esOperando(it, &pila) != NO)
{
if (Push(&it, &pila)==ERROR)
{
LiberaPila(&pila);
return ERROR;
}
/*luego continuaria conlos pops, etc..*/
La funcion leerItem, entre los puntos ke he señalado A y B, modifica los elementos de la pila (lo he comprobado imprimiendo el ultimo y el penultimo elemento de la pila justo en esos puntos, y cambia) .Pone en todos los elementos de la pila el ultimo elemento ke ha leido.Me parece extrañisimo, ya que la funcion leerItem no toca para nada la pila, a ver si alguien puede ayudarme, que estoy hecho un lio
Valora esta pregunta


0