2015-12-06 6 views
-1

Я пытаюсь исправить эту ошибку в течение часа, но все еще не могу понять это. Я получаю ошибку сегментации точно на месте, где я не манипулирую с массивом.C код - ошибка сегментации: 11

int height, width, i=0, j=0; 
    char newline; 

    scanf("%d %d%c", &height, &width, &newline); 

    if(newline != '\n') 
    { 
     return 0; 
    } 

    char pole[height][width]; 
    char nch; 

    while(1) 
    { 
     nch = getchar(); 

     if(nch == EOF) 
     { 
      break; 
     } 
     if(nch != '\n') 
     { 
      pole[i][j] = nch; 
      printf("i=%d a j=%d\n", i, j); //for my info, there it still runs 
      j++; 
     } 
     //The end of working piece of code (in last cycle...) 
     if(j>= width) 
     { 
      j=0; 
      i++; 
     } 
     if(i >= height) 
     { 
      break; 
     } 
    } 
+0

Начать с: 'char nch;' - >> 'int nch;' И 'i' и' j' используются, но не определены. (не являются 'width' и' hight') – wildplasser

+0

Ну, во-первых, 'getchar()' возвращает 'int', а не' char', и если я правильно помню, неявно кастинг на 'int', как вы делают это, чтобы сравнение «EOF» потерпело неудачу. –

+1

Что сказал вам отладчик? –

ответ

1

Вы не инициализируется i и j. Перед вводом петли while установите оба значения в 0.

+0

Извините, я должен загрузить весь код. Я их инициализирую. – user2508811

Смежные вопросы