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
arbolBin.c
Description: Binary data
_______________________________________________ Lista de correo Programacion. [email protected] http://listas.fi.uba.ar/mailman/listinfo/programacion
