Member 12919791 Ответов: 2

CS50 в PSET3 игры в "пятнашки": ничья ошибка функции


Изначально у меня была функция рисования, работающая без ошибок, но дающая неправильные результаты. Чтобы протестировать draw () с помощью GDB, я попытался создать отдельный файл для draw ().
Проблема заключается в этой ошибке во время выполнения:
~/workspace/pset3/fifteen/ $ ./Untitled2 Untitled2.c:10:15: runtime error: variable length array bound evaluates to non-positive value 0 Untitled2.c:10:18: runtime error: variable length array bound evaluates to non-positive value 0


Большое спасибо,

Что я уже пробовал:

include <cs50.h>
include <stdio.h>
include <stdlib.h>
include <unistd.h>
int main(int argc, string argv[]) {
	int d = atoi(argv[0]);
	int board[d][d];
	for (int e = 0; e < d; e++) {
		for (int f = 0; f < d; f++) {
			if (!( ( e == d-1) && ( f == d-1) )) {
				printf("%2d", board[e][f]);
			}
			if ( ( e == d-1) && ( f == d-1) )
			{
				printf("%2c", '_');
			}

		}
		printf("\n");

		printf("\n %i", argc);
	}
}

2 Ответов

Рейтинг:
4

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
14

OriginalGriff

Поэтому используйте отладчик и выясните, что это за значение: сообщение об ошибке довольно явное:

variable length array bound evaluates to non-positive value
Таким образом, d равно нулю или отрицательно, что означает, что atoi вернулся, что. так что в argv[0] это равно нулю или отрицательному числу?

Подсказка: первым параметром аргументов среды выполнения приложения C является имя exe-файла приложения...