Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Segmentation fault ajja

Estas en el tema de Segmentation fault ajja en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/09/2010, 22:06
 
Fecha de Ingreso: mayo-2006
Mensajes: 79
Antigüedad: 18 años
Puntos: 0
Segmentation fault ajja

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
  #2 (permalink)  
Antiguo 17/09/2010, 02:25
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Segmentation fault ajja

Usa el gdb para depurarlo.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 17/09/2010, 07:54
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Segmentation fault ajja

Apuesto por el strcpy hacia un arreglo de tamaño 8 que haces por ahi.

Etiquetas: fault
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:10.