es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Devolver cada palabra de una cadena en una lista enlazada

Quería devolver cada palabra de una cadena en un nodo, pero al principio no funcionó, ahora funciona, pero agrega algunos caracteres extraños automáticamente, no sé por qué. Si alguien puede mostrarme cómo solucionarlo, por favor.


#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct listeMots{ char val[20]; struct listeMots *next; }listeMots; listeMots motsDe(char* t); int main() { char* t; t = "this is a test but it is bugging "; listeMots nchlh; nchlh = motsDe(t); return 0; } listeMots motsDe(char* t){ int i=0 ,j=0; char* temp; listeMots *tete = malloc(sizeof(listeMots)); listeMots *ptr = tete; while (t[i] != '\0') { if('a'<=t[i] && t[i]<='z' ){ ptr->val[j] = t[i]; i++; j++; } else if (t[i] == ' '){ j = 0; printf("%s -->",ptr->val); ptr->next = malloc(sizeof(listeMots)); ptr = ptr->next; i++; } else{ j= 0; printf("%s -->",ptr->val); ptr->next = malloc(sizeof(listeMots)); ptr = ptr->next; ptr->val[0] = t[i]; printf("%s -->",ptr->val); ptr->next = malloc(sizeof(listeMots)); ptr = ptr->next; } } return *tete; }

No puedo ver exactamente dónde está el error, sé que estoy cerca, pero todavía estoy un poco perdido en este momento.</stdlib.h></string.h></stdio.h>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en los caracteres inesperados que se agregan a los nodos de la lista enlazada. Después de revisar el código, parece que el problema está en las instrucciones printf dentro del bucle while de la función motDe.

    En lugar de imprimir los valores de los nodos antes de enlazarlos, es mejor centrarse en la lógica para enlazar los nodos correctamente. Las instrucciones de impresión podrían moverse fuera del bucle while después de que todos los nodos hayan sido enlazados.

    Además, podría ser necesario manejar el caso en el que la cadena de entrada termina con una palabra y no tiene un espaciador u otro delimitador. Esto se puede manejar comprobando si i es igual a la longitud de la cadena antes de salir del bucle while.

    En general, para solucionar la función motDe, se deberían eliminar las instrucciones printf, verificar la condición de final de cadena y probar que la lista enlazada está formada correctamente.

Comments are closed.