[ Foro de C ]
#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.)