0
행렬을 가져 오는 함수를 실행하려고 시도하고 시계열로 90도 회전합니다. 함수의 첫 번째 'for'에서 어떤 이유로 'b'는 2 값에 도달 한 후 1을 더하고 그 후에는 잘 작동하지만 행렬이 너무 커서 그 오류가 발생합니다. 왜 추가 ++를하는지 이해할 수 없습니다.런타임 검사 실패 # 2 - 변수 'tempMatrix'주위의 스택이 손상되었습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define ROTATE_MATRIX_SIZE 5
void RotateMatrix90(int matrix[][ROTATE_MATRIX_SIZE]);
int main()
{
int i, j;
int matrix[ROTATE_MATRIX_SIZE][ROTATE_MATRIX_SIZE] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 };
RotateMatrix90(matrix);
for (i = 0; i < ROTATE_MATRIX_SIZE; i++)
{
for (j = 0; j < ROTATE_MATRIX_SIZE; j++)
{
if (matrix[i][j] < 10)
printf(" ");
printf("%d ", matrix[i][j]);
}
printf("\n");
}
getch();
return 0;
}
void RotateMatrix90(int matrix[][ROTATE_MATRIX_SIZE])
{
int i, j, a, b, tempMatrix[ROTATE_MATRIX_SIZE][ROTATE_MATRIX_SIZE];
for (i = 0, a = ROTATE_MATRIX_SIZE; i < ROTATE_MATRIX_SIZE; i++, a--)
{
for (j = 0, b = 0; j < ROTATE_MATRIX_SIZE; j++, b++)
tempMatrix[a][b] = matrix[i][j];
}
for (i = 0; i < ROTATE_MATRIX_SIZE; i++)
{
for (j = 0; j < ROTATE_MATRIX_SIZE; j++)
matrix[i][j] = tempMatrix[i][j];
}
}
이 파일은 완벽하게 컴파일되지 않습니다. 그것은 당신의 첫 번째 고려되어야합니다 – user3629249