Linux - Ayuda!!

 
Vista:

Ayuda!!

Publicado por cesar (2 intervenciones) el 30/11/2003 03:40:13
Hola, era para ver si alguien me puede ayudar con un error. Estoy haciendo un juego para 2 personas(4 en linea), estas comparten archivos, uso una matriz de integer para controlar el juego y lo estoy haciendo en C para unix/linux, todo compila bien pero a la hora de ejecutarlo, cuando empieza el juego me sale este error: Segmentation fault, gracias al que me pueda ayudar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda!!

Publicado por chuidiang (101 intervenciones) el 30/11/2003 11:03:55
Ese error suele deberse a algún puntero desmadrado. Puede ser que utilices un puntero antes de apuntarlo a una zona de memoria válida, que te salgas de ínidce de un array, que liberes una zona de memoria dos veces, etc.
La forma de encontrar este error es con el debugger (compilar con la opción -g y luego arrancarlo con el debugger que tengas).
Si con el debugger no encuentras nada, echa un ojo en www.geocities.com/chuidiang al apartado de punteros por si sacas algo en claro. También, dentro de trucos c++ en la misma página, puedes mirar la parte de redefinir el operador new y delete, para ayudarte a encontrar el puntero desmadrado.
Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda!!

Publicado por cesar (2 intervenciones) el 30/11/2003 21:39:30
gracias por la ayuda, pero el problema que tengo no creo que se deba a punteros realmente porque si uso pero solamente para los archivos, y existe una matriz pero la uso sin punteros, no sé si sería mejor usarla con punteros.
Y tengo otra duda, esta sería la forma correcta de llenar la matriz con la informacion de un archivo:
int mat[5][5];
void llenar_mat()
{
FILE *arch;
arch=fopen("arch_mat.txt","rb");
fscanf(arch,"%84d",&mat);
fclose(arch);
}
GRACIAS al que me pueda responder...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda!!

Publicado por chuidiang (101 intervenciones) el 01/12/2003 11:31:52
Veo un poco raro tu codigo.
Si el fichero es binario y tiene el formato adecuado, podrias leer toda la matriz de un golpe con fread().
Sin embargo, por la pinta de tu codigo, me hace la impresion de que el fichero es de texto. Para leer la matriz debes hacerlo elemento por elemento con algo como esto

for (i=0; i<5; i++)
for (j=0; j<5; j++)
fscanf (arch, "%d", &(mat[i][j]));

El fscanf() que tienes ahora trataria de leer un solo entero escrito con 84 cifras y lo meteria directamente en la direccion de mat. mat en si mismo ya es un puntero, por lo que al poner el ampersand delante no se como se lo tomaria (seguramente ese sea el segmentation fault que te esta dando).

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar