#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define AERO 3 /* Numero de texto */ /* Aloca matrix linhas x colunas */ int **alocaMatriz(int linhas, int colunas) { int i,j; int **matriz; matriz = (int **) malloc((linhas) * sizeof(int *)); if (matriz == NULL) { printf("Erro de memoria/alocacao\n"); exit(1) ; } for (i = 0; i < linhas; i++) { matriz[i] = (int *) malloc((colunas) * sizeof(int)); if (matriz[i] == NULL) { printf("Erro de memoria/alocacao\n"); exit(1); } for(j = 0; j < colunas; j++) matriz[i][j] = 0; } return matriz; } void imprimeTabela(int **tabela) { int i, j; for (i = 0; i < AERO; i++) { for (j = 0; j < AERO; j++) { printf("%d", tabela[i][j]); } printf("\n"); } } /* Pega o arquivo aeroportos.txt, joga as distancias entre os aeroportos na tabela e inicializa a lista de decolagem e as pistas */ void listaAeroportos(int **tabela) { FILE *texto; int i,j; char sigla[3]; texto = fopen("aeroportos.txt", "r"); if (!texto) exit(1); for (i = 0; i < AERO; i++) { fscanf(texto, "%s", sigla); for(j = 0; j < AERO; j++) fscanf(texto, "%d", &tabela[i][j]); } imprimeTabela(tabela); fclose(texto); } |
Tenho esse código aí, lindo, bunito e tudo +.
Agora a main:
int main(int argc, char *argv[]) { int **tabela; tabela = alocaMatriz(AERO, AERO); imprimeTabela(tabela); listaAeroportos(tabela); return 0; } |
Funciona e sai do programa que rapidim. Imprime a tabela que aloquei e inicializei tudo com 0 e blz.Agora, se eu adiciono essa linha:
int main(int argc, char *argv[]) { int **tabela; tabela = alocaMatriz(AERO, AERO); imprimeTabela(tabela); listaAeroportos(tabela); imprimeTabela(tabela); return 0; } |
O que eu quero com essa linha: Imprimir a tabela depois que peguei do fscanf na função listaAeroportos(tabela).
Isso dá SegFault
Alguém tem uma luz ?