Tengo un ejercicio en el cual tengo que almacenar palabras en una lista y luego recibir un valor entero. Si la palabra de la lista es mayor o igual que la longitud que ingrese anteriormente, esa palabra va a ser guardada en una nueva lista.
Estoy intentadolo hacer pero al momento de ejecutar el programa, me da un error de ejecucion en la carga y no le encuentro la falla.
Creo que es un error de carga.
Adjunto el codigo haber si me pueden dar una mano
Código
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct s_nodo { char*palabra; struct s_nodo*sig; }; typedef struct s_nodo*t_nodo; void agregar(t_nodo*nodo); char* carga(void); void filtrar_palabras(t_nodo,t_nodo*,int); void imprimir(t_nodo); int main() { int limite; t_nodo lista=NULL; t_nodo filtrada=NULL; agregar(&lista); agregar(&lista); agregar(&lista); agregar(&lista); imprimir(lista); imprimir(filtrada); return 0; } void agregar(t_nodo*nodo) { if(*nodo==NULL) { (*nodo)->palabra=carga(); (*nodo)->sig=NULL; } else { agregar(&(*nodo)->sig); } } char*carga(void) { char*texto=NULL; int i=0; char letra; letra=getche(); if(texto==NULL) { return texto; } while(letra!='\r') { *(texto+i)=letra; i++; letra=getche(); } *(texto+i)='\0'; return texto; } void filtrar_palabras(t_nodo nodo,t_nodo*nodo1,int longitud) { if(*(nodo1)=NULL) { { (*nodo1)->palabra=nodo->palabra; (*nodo1)->sig=NULL; nodo=nodo->sig; } } else { filtrar_palabras(nodo,&(*nodo1)->sig,longitud); } } void imprimir(t_nodo nodo) { while(nodo!=NULL) { nodo=nodo->sig; } }