Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con punteros. O eso creo

Estas en el tema de problema con punteros. O eso creo en el foro de C/C++ en Foros del Web. Hola Estoy intentando hacer una funcion para insertar elementos en una lista enlazada mediante la siguiente funcion: Código: void Insertar(struct Lista *cab, char *buf) { ...
  #1 (permalink)  
Antiguo 17/04/2006, 13:09
 
Fecha de Ingreso: noviembre-2003
Ubicación: Valencia
Mensajes: 131
Antigüedad: 21 años, 1 mes
Puntos: 1
problema con punteros. O eso creo

Hola

Estoy intentando hacer una funcion para insertar elementos en una lista enlazada mediante la siguiente funcion:

Código:
void Insertar(struct Lista *cab, char *buf)
{
     int i, j;
     struct ElemLista *elem, *elem2;
     i = *cab.numElem;

     elem = *cab.primero;

     while(j != i)
     {
       if (elem.palabra == *buf)
       {
         elem.num++;
         j = i-1;
       }
       else if(str( elem.palabra, buf ) < 0 )
       {
         elem = elem.siguiente;
       }
       else
       {
         elem2 = malloc( sizeof( struct ElemLista ) );
         elem2.palabra = buf;
         elem2.num = 1;
         elem2.siguiente = elem.siguiente;
         elem.siguiente = elem2;
         j = i - 1;//para salir del bucle
       }
       j++;
     }
}//Insertar
ElemLista y Lista son estructuras, la primera es de un elemento, y la segunda es la cabecera de la lista.

Están definidas de esta forma:
Código:
struct ElemLista
{
       int num;
       char *palabra;
       struct ElemLista *siguiente;
};

struct Lista
{
       struct ElemLista *primero;
       int numElem;
};
Mi duda es la siguiente:
Cuando compilo me genera varios errores de este tipo:

'request for member `numElem` in somthing not a struct or union'

los demás errores dicen lo mismo, pero para otras variables como .primero, .palabra, etc.

¿Alguien podría decirme qué hago mal?

Yo la verdad es que con los punteros siempre me lio.

Ahh, por si acaso, estoy programando con C y el compilador que uso es DEV-C++.

Gracias
  #2 (permalink)  
Antiguo 17/04/2006, 13:13
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Bueno, segun vi, estas usando el operador . con punteros cuando se debe utilizar elñ operdor ->.

Si tienes una puntero a estructura o clase, en vez de usar . para accesar sus miembros, debes usar ->.

Saludos
  #3 (permalink)  
Antiguo 18/04/2006, 07:02
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
O eso, o desreferenciar la estructura y después usarla con normalidad:

Código:
(*numElem).loquesea
Pero para evitar eso se usa el -> y queda perfectamente entendible que estás accediendo a una estructura por su puntero (lo cual es lo habitual).
  #4 (permalink)  
Antiguo 18/04/2006, 07:11
 
Fecha de Ingreso: noviembre-2003
Ubicación: Valencia
Mensajes: 131
Antigüedad: 21 años, 1 mes
Puntos: 1
Gracias por contestarme

Era ese el problema, pero ahora me da otro error que no sé localizarlo, me dice algo del linker, referencia a `str` indefinida.
No lo entiendo.

Si alguien está interesado, puedo enviarle el fichero .c para mirarlo.

Gracias a los dos.
  #5 (permalink)  
Antiguo 18/04/2006, 07:26
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 5 meses
Puntos: 24
puedes publicarlo aqui si quieres.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #6 (permalink)  
Antiguo 18/04/2006, 11:25
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Bueno, no se yo, pero tu utilizaste una funcion llamada str que no se que hace.
Tu la definiste, intentaste usar una funcion para comparar strings(strcmp) o algo parecido?
Saludos
  #7 (permalink)  
Antiguo 18/04/2006, 12:01
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Busca en todos los archivos el símbolo "str", y mira a ver dónde está.

Lo más probable es que te equivocases al escribir sin querer y no pusieses el nombre correcto.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:11.