2016-03-21 7 views
0

Этот фрагмент программы должен считывать информацию в структурах, которые хранятся на 2-м пути. Но этот фрагмент программы дает ошибку сегментации после «printf (« lel4 \ n »);». У меня такое ощущение, что это выделено в память, но я не знаю. Я искал ответы в Интернете, и я делаю то же самое, что и ответы, но он не работает.2-строчная структура массива, дающая ошибку сегментации

typedef struct coordinates{ 
    int xposition;       
    int ypositiony;       
    char token;      
    int discovered;     
} coordinates 

typedef coordinates *coord; 

coord **allocMemory(int row, int col){ 
    int i; 
    coord **city = malloc(sizeof(coord)*col); 
    assert(city != NULL); 
    for(i=0; i<col; i++){ 
     city[i] = malloc(sizeof(struct coordinates)*row); 
     assert(city[i] != NULL); 
    } 
    return city; 
} 


coord **readInfo(int row, int col){ 
    int i, j; 
    char c; 
    coord **city = allocMemory(row, col); 
    for(i=0; i<col;i++){ 
     c = getchar(); 
     for(j = 0; j<ros; j++){ 
      c = getchar(); 
      if(c == '#' || c == '.'){ 
       printf("lel4\n"); 
       (*city)[i][j].xposition = i; 
       printf("lel5\n"); 
       (*city)[i][j].yposition = j; 
       (*city)[i][j].token = c; 
       (*city)[i][j].discovered = 0; 
      } 
     } 
    } 
    return city; 
} 
+0

Там нет 2D массива в коде и не конструкция, которая может быть использована в качестве одного. – Olaf

+0

Что такое ** город делает тогда? – LifeisHard

+1

'coord **' -> 'coord *' – BLUEPIXY

ответ

0
coord ** 

к coord *

и

city[i][j].xposition = i; 
city[i][j].yposition = j; 
city[i][j].token = c; 
city[i][j].discovered = 0; 
Смежные вопросы