buenas, tengo un problema algo urgente.
haber si alguien me puede dar una mano, porque la verdad no tengo idea que es lo que pasa.
la cosa es que tengo una estructura
struct s{
char *name;
int id;
int c;
char **dNames;
int *dIds;
}
y creo un vector dinamico con esa estrucura, y lo completo a partir de un archivo xml.
los campos dNames y dIds con vectores dinamicos de los name e ids de otros elementos del mimso vector. y c es la cantidad de elementos de estos.
al cargar los datos solo cargo los campos id, name y dNames.
y la idea es completar el vector de enteros segun el id del name que le corresponde segun la posicion en el vector.
un caso concreto que estoy porbando es el siguiente:
hay 4 elementos en el vector con los siguientes valores
1
name = "name1"
id = 0
dNames = NULL
c = 0
2
name = "name2"
id = 1
dNames = {"name1"}
c = 1
3
name = "name3"
id = 2
dNames = {"name1"}
c = 1
4
name = "name4"
id = 3
dNames = {"name2", "name3"}
c = 2
y la idea es completar los dIds con los siguientes valores:
1
dIds = NULL
2
dIds = {0}
3
dIds = {0}
4
dIds = { 1, 2}
para lo que estoy usando el siguiente algoritmo:
for(int i = 0; i < _tc; i++)
{
for(int j = 0; j < tasks[i].c; j++)
{
tasks[i].dIds[j] = -1;
for(int k = 0; (k < _tc) && (tasks[i].dIds[j] == -1); k++)
{
if(!strcmp(tasks[i].dNames[j], tasks[k].id))
tasks[i].dIds[j] = tasks[k].id;
}
}
}
_tc es el tamaño del vector, 4 en este caso
El problema surge cuando i toma el valor 3, o sea el cuarto elemento al hacer el strcmp sale un error de una dll de ms.
Y al debugearlo me sale que el valor de tasks[3].dNames[0] es 0xffffffff
Lo mas extraño es que antes de entrar en los bucles imprimo tasks[3].dNames[0] y me sale "name2" que es lo que corresponde.
Alguien tiene una idea de que es lo que esta pasando?
Agradeceria cualquier aporte por minimo que sea.
Y si alguien quere perder 5 minutos para probar si le pasa lo mismo estaria eternamente agradecido.
Saludos