@noame

Завершается программа на Си из-за одной строчки кода. Что делать?

Завершается программа на Си из-за одной строчки кода. Что делать?

_playingField[_dogCoordinatesX][_dogCoordinatesY] = '@';

Если её убираю, или вместо имен переменных ставлю цифры, то программа работает.

Вот весь код:

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

int game1()
{
    char _playingField[16][35];
    int _dogCoordinatesX = 8;
    int _dogCoordinatesY = 15;
    char _pressedKey;
    
    while(1)
    {   
     sprintf(_playingField[0], "##################################");
     for(int i = 1; i < 16; i++)
     {
         sprintf(_playingField[i], "#                                #");
     }                                                                   
     sprintf(_playingField[16], "##################################");
     
     // _playingField[_dogCoordinatesX][_dogCoordinatesY] = '@';
      
    
     for(int i = 0; i < 16; i++)
     {
         printf("%s\n", _playingField[i]);
     }
    
      _pressedKey = getch();
     if(_pressedKey == 'w')
         _dogCoordinatesY++;
     if(_pressedKey == 's')
         _dogCoordinatesY--;
     if(_pressedKey == 'd')
         _dogCoordinatesX++;
     if(_pressedKey == 'a')
         _dogCoordinatesX--;
        
     system("cls");   
         
    }

    

    return 0;
}
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
sprintf(_playingField[16], "##################################");

В этой строчке выход за границы массива. Массив на 16 элементов, а индексация начинается с 0. Следовательно, последний индекс равен 15.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы