Ayuda con el sigueinte codigo en C URGENTE!!!!

Imagen de MadTim
0 puntos

A continuacion tengio este codigo indeferentemente de para que es o de lo q haga no es necesario saberlo solo quiero saber posibles errores y quiero saber xq en el printf me imprime resultados que no deseo se supone que solo debe imprimir 1 vez el par de numeros que vienen desde al archivo(mas abajo incluyo el archivo)una unica vez pero en realidad me los imprime varias veces y 2 veces me imprime los numeros mal por favor necesito ayuda en esto ya que es muy importante y no puedo comtinuar sin quitar esos errores Gracias por adelantado a los que me ayuden ahh solo un detalle en la linea que esta documentada esta bien crear ese thread de esa forma.

#include
#include
#include
#include
#include
#define Tam 30

pthread_mutex_t espera;
pthread_mutex_t conflicto;
pthread_mutex_t standoff;
pthread_mutex_t umbral;
pthread_mutex_t muerte;
pthread_mutex_t ganar;
pthread_mutex_t reprod;
pthread_mutex_t iniciaragentes;
struct agente
{
int tipo;
int fila;
int columna;
int estado;
int tiempo_morir;
int tiempo_parir;
int tiempo_mover;
};
struct posix
{
int fil;
int column;
};
pthread_t agentehil[900];
pthread_attr_t atrib;
struct agente Agent[Tam][Tam];
void crearhilo(void *parm);
int prob_mutacion();
void* costo_conflicto(void*);
void* costo_standoff(void*);
void* umbral_muerte(void*);
void* tiempo_muerte(void*);
void* beneficio_ganar(void*);
void tiempo_espera(struct posix);
void* tiempo_reproduccion(void*);
void* iniciar_agentes(struct posix);
int main( int argc, char *argv[] )
{
FILE *datos;
struct posix posicion;
char cadena[256];
char *var;
int variables[7];
int i;
int m, j;
int idhil=0;
pthread_attr_init(&atrib);
pthread_mutex_init(&reprod,NULL);
pthread_mutex_init(&ganar,NULL);
pthread_mutex_init(&espera,NULL);
pthread_mutex_init(&muerte,NULL);
pthread_mutex_init(&umbral,NULL);
pthread_mutex_init(&standoff,NULL);
pthread_mutex_init(&conflicto, NULL);
pthread_mutex_init(&iniciaragentes,NULL);
if((datos=fopen("dato.c", "r+"))==NULL)
{
printf("No se pudo abrir el archivo/n");
}
else
{
while(!feof(datos))
{
fgets(cadena,30,datos);
var=strtok(cadena,",");
variables[0]= atoi(var);
for(int i=1;(var=strtok(NULL,","))!=NULL;i++)
{
variables[i]=atoi(var);
for(int m=0;m<30;m++)
{
for(int j=0;j<30;j++)
{
if((m==variables[1])&&(j==variables[2]))
{
printf("%d\n%d\n",m,j);
Agent[variables[1]][variables[2]].tipo=variables[0];
Agent[variables[1]][variables[2]].fila=variables[1];
Agent[variables[1]][variables[2]].columna=variables[2];
Agent[variables[1]][variables[2]].estado=variables[3];
Agent[variables[1]][variables[2]].tiempo_morir=variables[4];
Agent[variables[1]][variables[2]].tiempo_parir=variables[5];
Agent[variables[1]][variables[2]].tiempo_mover=variables[6];
posicion.fil=m;
posicion.column=j;
//pthread_create(&agentehil[idhil],&atrib,iniciar_agentes(posicion),NULL);
}
}
}
idhil++;
}
}
}
fclose(datos);
return 0;
}
void * iniciar_agentes(struct posix copy)
{
pthread_mutex_lock(&iniciaragentes);

pthread_mutex_unlock(&iniciaragentes);
}
void * costo_conflicto(void *parm)
{
pthread_mutex_lock(&conflicto);
pthread_mutex_unlock(&conflicto);
}
void * costo_standoff(void *parm)
{
pthread_mutex_lock(&standoff);
pthread_mutex_unlock(&standoff);
}
void * umbral_muerte(void * parm)
{

pthread_mutex_lock(&umbral);
pthread_mutex_unlock(&umbral);
}
void * tiempo_muerte(void * parm)
{
pthread_mutex_lock(&muerte);
pthread_mutex_unlock(&muerte);
}
void * beneficio_ganar(void * parm)
{
pthread_mutex_lock(&ganar);
pthread_mutex_unlock(&ganar);
}
void tiempo_espera(struct posix copy)
{
pthread_mutex_lock(&espera);
int random;
random=rand()%9;
if(random==0)
{

}
if(random==1)
{}
if(random==2)
{}
if(random==3)
{}
if(random==4)
{}
if(random==5)
{}
if(random==6)
{}
if(random==7)
{}
if(random==8)
{}
pthread_mutex_unlock(&espera);
}
void * tiempo_reproduccion(void * parm)
{
pthread_mutex_lock(&reprod);
pthread_mutex_unlock(&reprod);
}
int prob_mutacion()
{
return rand()%2;
}
///////////////////////////////////////////////archivo//////////////////////////////////////
2,6,8,0,10000,5000,2500,
3,27,29,0,11000,6000,3000,