C/Visual C - Punteros que apuntan a punteros

 
Vista:

Punteros que apuntan a punteros

Publicado por David (2 intervenciones) el 06/05/2010 13:46:25
Duda sobre punteros, estoy haciendo un programa, y quiero declarar un espacio en memoria que sea una matriz, para eso, necesito doble punteros.

El espacio en memoria es introducido en un fichero, y a partir de esos valores, se crea.
No se que ocurre pero no funciona, me da error de segmentacion, haber si alguien supiese porqué, gracias.

Aqui va el codigo:

int main() {

char c;
int i, j, gen, fil, colum, cont1;

FILE *f;
f = fopen("entrada.txt","r");

//Sacamos las filas y las columnas que tiene que tener la matriz del fichero.
fscanf(f,"%d %d\n",&fil, &colum);

//creamos espacio para la matriz (doble punteros)
char **matriz= (char**) malloc(fil* sizeof(char*));

for(cont1=0; cont1<fil;cont1++){
matriz[fil]=(char*)malloc(colum*sizeof(char));
}

//iniciamos traspaso de matriz txt a la matriz en memoria.
for(i=0; i<fil;i++){
for(j=0;j<colum;j++){
fscanf(f,"%c", &c);
matriz[i][j]=c;
}
}

}
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:Punteros que apuntan a punteros

Publicado por David (2 intervenciones) el 06/05/2010 14:16:34
Por cierto, llevo ya bastante rato buscando donde puede estar el error, y diria que me da error en la linea:

matriz[i][j] = c;

Porque cuando la quito, funciona todo bien, y cuando la pongo, me da error de segmentacion, haber si alguien me puede ayudar. Gracias
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:Punteros que apuntan a punteros

Publicado por Tom (619 intervenciones) el 06/05/2010 19:19:17
1) No se dice, ni se escribe, ni se piensa "haber si".

2) No es necesario el uso de dobles punteros, demasiadas entradas sobre el mismo tema en este foro ya.

¿ No es mucho más simple esto ?:

char *m = (char*)calloc(fil, colum);
char *matriz = m;

for(i = 0; i < fil; i++){
for(j = 0; j<colum; j++){
fscanf(f, "%c", &c);
*(matriz++) = c;
}
}
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