[ Foro de C ]

Alguien me puede decir por qué me sale core dumped en este programa?

04-Sep-2022 20:23
Invitado (patri)
0 Respuestas

#include <stdio.h>
#include <stdlib.h>

struct matriz
{
  int vertices;
  int aristas;
  int *mat;
};



struct matriz Leer_MINC(char *);

int main(void)
{
 struct matriz MINC;
 int i,j;

 /* Llamada a la función */
 MINC=Leer_MINC("Matriz_Incidencias.txt");
 
 /* Mostrar el resultado */
 printf("La matriz de incidencia del fichero de texto es la siguiente:\n");
 for(i=0;i<MINC.vertices;i++)
 {
     for(j=0; j<MINC.aristas; j++)
       printf("%d\t",MINC.mat[i*MINC.aristas+j]);
     printf("\n");
 }  

 /* Liberamos memoria reservada */
 free(MINC.mat);

 /* Intentamos abrir un archivo que no existe, debería devolver una matriz con valores concretos */
 MINC=Leer_MINC("archivo_que_no_existe.txt");
 printf("Intentamos abrir un archivo inexsitente\n");
 if(MINC.aristas != -1 || MINC.vertices != -1 || MINC.mat != NULL)
   printf("La función no devuelve los valores adecuados cuando el archivo NO existe!!!\n");
 else  
   printf("Correcto!, la función devuelve los valores indicados cuando el archivo NO existe");
 
 return 0;
}
struct matriz Leer_MINC(char *nombre)
{
 /* INICIO CÓDIGO ESTUDIANTE */
FILE *pf;
int i,j,N,M,*n;
struct matriz *v;

pf=fopen(nombre,"rt");
 if(pf==NULL){
   printf("Error al abrir el archivo");
     v->vertices=-1;
     v->aristas=-1;
     v->mat=NULL;
     fclose(pf);
}
 
 fscanf(pf,"%d %d",&N,&M);
 
N=v->vertices;
M=v->aristas;
 
v=(struct matriz*)malloc(v->vertices*(v->aristas)*sizeof(struct matriz));
   if(v==NULL){
printf("Error al reservar memoria");
     v->vertices=-1;
     v->aristas=-1;
     v->mat=NULL;
     fclose(pf);
     free(v);
   }
     
 for(i=1;i<N;i++)
{
for(j=0;j<M;j++){
   fscanf(pf,"%d ", &v->mat[i*M+j]);
}

 }
 fclose(pf);
 return *v;
 

}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)