Hola a todos. Es la primera vez que escribo en la lista así que me presento,
soy Esteban Invernizzi, estudiante de Ing. en Informática a punto de empezar
el 3er cuatrimestre.

Ahora al código... el fin de semana quise implementar un árbol binario como
ejercitación de lo que aprendí con The ANSI C Programming Language... es un
programa desarrollado en el libro, que habiendo terminado de leerlo quise
hacer a ciegas, pero tengo un problema con un puntero en una sentencia que
según el libro debería funcionar =S. Dada la función getword(char *s,
unsigned len) que devuelve int, le paso el puntero a una cadena de
caracteres y la cantidad de bytes disponibles, y asigna a esa posición la
próxima palabra encontrada en stdin y devuelve la longitud de la palabra. La
llamada es:

while (getword(word, WORDLEN) > 0)
        addnode(root, word);

que leería una palabra y la agregaría al árbol... que les va dando orden
alfabético. La definición de la función es la siguiente:

int getword(char *s, unsigned len)
{
    int i, c;

    //mientras no sea alfabetico sigo leyendo
    while (!isalpha(c = getchar()) && c != EOF);

    //mientras sea alfabetico y no llegue al final del buffer agrego
    for (i = 0; isalpha(c) && i < len; c = getchar(), i++)
        *s++ = (char) c;                                                  //
linea con problema...
    *s = '\0';

    return i;
}

en la linea marcada, la que es cuerpo del for, se produce una violación de
segmentación... el puntero que le paso está definido e inicializado así:

char *word;
word = (char*) malloc(WORDLEN+1);

según el libro todo esto debería funcionar, pero no le encuentro error. Lo
compilé en WinXP con el Borland C++ y en linux con gcc... no dan error en
tiempo de compilación... por las dudas les adjunto el código completo.
Cualquier sugerencia es bienvenida, y por supuesto la resolución del
problema también!
Desde ya muchas gracias,

Esteban

Attachment: arbolBin.c
Description: Binary data

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a