Este es mi problema. Estoy realizando una tarea que precisa el uso de Listas Enlazadas usando C en Linux. El enunciado pide crear un corrector ortográfico en inglés (para facilitar el trabajo con los caracteres), de tal modo que:
* Si es una palabra reconocida, entonces dejarla tal cual es
* Si está mal escrita, corregirla
* Si no se reconoce, dejarla en mayúsculas.
Hasta ahí logre hacerlo, hice las listas enlazadas, y no exento de complicaciones con las funciones de cadenas de ANSI C, tuve que implementar la Copia de cadenas y Concatenación a mano. Todo lo que tengo hecho, probado aisladamente, funciona impecable.
La otra complicación del enunciado es que debe reconocer palabras con variantes, por ejemplo finalizadas en -ed, -ing, -s, -es.
Los errores comienzan a aparecer a la hora de ejecutar una búsqueda y comparar la Palabra buscada con la palabra actual de la lista Concatenada con la terminación (mi algoritmo de comparación). Por alguna extraña razón se cae en cualquier punto de la iteración a través de la búsqueda, aunque en mi PC usando Kubuntu 7.04 se me cae en un punto, y en los laboratorios de prueba se cae en otro punto. Cuando digo se me cae, significa SEGMENTATION FAULT.
Cuando hago la misma búsqueda sin comprobar las otras terminaciones no provoca fallos, pero hasta ahí no estaría completa la tarea.
--
NO pido que me hagan la tarea, ya tengo el 90% hecho, me falta solo esto que realmente no puedo determinar, según yo mi algoritmo está bueno, pero se vuelve loco.
Los printf que le agregue a la función Concatenar eran para "depurar" (no se depurar), y llegué a la conclusión de que sin motivo se cae en el printf de la salida de Concatenar, pero solo en cierto punto del recorrido, y distinto en cada máquina donde pruebo.
--
Acá esta el código fuente (no lo pude postear porque eran varios archivos)
TAR.GZ: http://www.mediafire.com/?fiwjmij2gl9
ZIP: http://www.mediafire.com/?c9f4t1g2gti
Para quien me quiera ayudar, le doy la facilidad de poner atención en la función Buscar (listas.c) y Corregir (listas.c). Para compilarlo hice que funcionara con el clásico:
./configure
make
Aunque también incluye un proyecto para KDevelop. Para que menciono Dev-C++ en windows , ahí se me cae mucho antes .
La llamada al programa se hace así:
Código:
De todos modos, si no alcanzo a hacer esto para la fecha de entrega, igualmente me gustaría saber donde está el error, para no volver a cometerlo./ruta/al/ejecutable/corrector data/testfile.dat data/checked.dat
De antemano, muchas gracias.