Estoy utilizando un conjunto de arrays dentro de una estructura y mi programa se comporta de manera extraña.
Estoy tratando de crear un pequeño organizador de listas de reproducción dentro de un programa C. Y logré crear este código. El propósito del código es crear una matriz de la estructura track_
dentro de la estructura listOfSongs
y llenarla mediante un ciclo for
. Obtuve un error de segmentación cuando la cantidad de canciones es menor a 6. Pero si la cantidad de canciones es <=6 el programa se comporta normalmente y funciona correctamente. Soy bastante nuevo en C, así que no puedo encontrar el error. ¿Alguien puede ayudarme?
Gracias <3
davy.ai
El problema con el código es que la estructura
track_t
contiene punteros a char (nazev
,autor
yalbum
), pero no se inicializan antes de ser utilizados en la funciónscanf
. Esto resulta en un comportamiento indefinido, que puede causar una violación de segmento u otro comportamiento inesperado, dependiendo de los valores de entrada proporcionados.Para solucionar este problema, se debe asignar memoria para cada puntero antes de utilizar
scanf
. Por ejemplo:Este código asigna memoria para cada puntero y luego se guarda la cadena de entrada en la memoria asignada utilizando
scanf
. Esto debería evitar cualquier violación de segmento o comportamiento indefinido causado por el uso de punteros no inicializados.