Gente alguien se puede fijar porque demonios me da segmentation fault este codigo.
 
 
 
 
 
#include <stdio.h>
#include <string.h>
 
 
 
int cuantasTareas(char*); //prototipo
char* sacarMB(char*); //prototipo
char numeroTask(char*);//prototipo
 
//NumeroTask(ptrToken)
 
 
char numeroTask(char*cadena){
 
char unChar;
unChar = cadena[4];
return unChar;
 
}
 
 
 
 
char* sacarMB(char*cadena){
 
char* ptrToken;
 
ptrToken = strtok(cadena,"M");
return ptrToken;
}
 
 
 
 
int cuantasTareas(char* cadena){
 
int incrementador = 0;
int contador = 0; 
 
while(cadena[incrementador] != '#'){
 
if (cadena[incrementador] == '$'){
	incrementador +=1;
 
	if (cadena[incrementador]== '$'){
 
		contador += 1;
		incrementador +=1;
 
	}//del segundo if
	else {
	incrementador +=1;
	}
} //del primer if
else {
incrementador +=1;
}
 
 
 
 
 
 
 
} //del while 
 
 
 
 
return contador;
}
 
int main(){
 
typedef struct {
	char ID[15];
	char hash[33];
	int tam;
	int cantTareas;
 
}job;
 
typedef struct {
	char ID[8];
	int disco;
	int memoria;
	int cpu;
	char dependencia[8];
}task;
 
int contador,contador2 = 0;
job unJob;
char cadena[1000];
char* ptrToken;
strcpy(cadena,"job1.6e023d8b8758f8f826152de77a3cc1  d9.md5.6.$$.task1.This is the first task.512MB.250MB.300.task2.task6.task3.$$.task2.Th  is is the second task.523MB.300MB.500.task7.task4.task5.#");
unJob.cantTareas = cuantasTareas(cadena);
task tareas[unJob.cantTareas];
ptrToken = strtok(cadena,".");
strcpy(unJob.ID,ptrToken);
//while(ptrToken !=NULL){
	ptrToken = strtok(NULL,".");
	strcpy(unJob.hash,ptrToken);
	ptrToken = strtok(NULL,".");
	ptrToken = strtok(NULL,".");
	unJob.tam = atoi(ptrToken);
	ptrToken = strtok(NULL,".");
	while(ptrToken != NULL){  // este es el while 2
 
		ptrToken = strtok(NULL,".");
		strcpy(tareas[contador].ID,ptrToken);
		ptrToken = strtok(NULL,".");
		ptrToken = strtok(NULL,".");
		tareas[contador].disco =atoi((sacarMB(ptrToken)));
	 	ptrToken = strtok(NULL,".");
		tareas[contador].memoria =atoi((sacarMB(ptrToken)));
		ptrToken = strtok(NULL,".");
		tareas[contador].cpu = atoi(ptrToken);
 
		while( (strcpy(ptrToken,"$$") != 0)){
		tareas[contador].dependencia[contador2] = numeroTask(ptrToken);
		contador2 +=1;
 
 
 
} //del while 3
 
 
 
}// del while 2
 
// while 1}
printf("id %s\n  hash  %s\n  tamaño %d\n  cantTareas %d\n",unJob.ID,unJob.hash,unJob.tam,unJob.cantTare  as);
return 0;
}// del main 
   
 



