Я пытаюсь определить массив строк, используя malloc
, но некоторые значения возвращают ошибку нарушения доступа. Поскольку вся программа обширна, я добавляю только часть, где объявлена матрица:
int main(void)
{
char* temp;
char p[MAXSIZE];
printf("This program lists the possible permutations of a character sequence\n");
printf("Enter your sequence: ");
scanf_s("%s", &p, MAXSIZE);
temp = malloc(sizeof(char) * (strlen(p)));
int count[MAXSIZE / 2] = { 0 };
char* y = checkforrepetition(p, count);
char** u = malloc(sizeof(char) * possibilities(count,strlen(p))*MAXSIZE);
for (int i = 0; i <= (possibilities(count,strlen(p)) - 1); i++)
{
u[i] = malloc(sizeof(char)*MAXSIZE);
}
recursivepermute(p, 0, temp, strlen(p), u, possibilities(count,strlen(p)));
}
Я использую scanf_s
, потому что Visual Studio требует от меня этого. Я хотел бы знать, является ли ошибка проблемой с объявлением самого массива или есть ли ошибка где-то еще в коде.
Краткое объяснение таково: функция возможностей возвращает количество комбинаций, возможных для строка, предоставленная пользователем. Назначение массива u
состоит в том, чтобы хранить уже сделанные перестановки, чтобы избежать повторения одной и той же комбинации в строках с повторяющимися символами.