Stack around the variable was corrupted - C (СИ) (150274)
Формулировка задачи:
Непонятно, почему возникает данная ошибка, причем она возникает на том моменте, когда уже нет никакой записи в переменную ans. 106 строка. Прошу помочь.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <iomanip> #include <math.h> #include <ctype.h> #include <conio.h> #include <iostream> #include <stdlib.h> int main() { setlocale(LC_ALL, "Russian"); int mass[20][20], mass1[20][20], res[20][20], i, k, j, z, n, x, y,z1; char ans; printf("Введите размер исходных 2 - x матриц - не более 20\n"); printf("Вы ввели: "); scanf_s("%d", &n); if (n > 0 && n < 21) { printf("\n"); printf("----------\n"); printf("Матрица 1\n"); printf("----------\n"); printf("\n"); printf("1 - Автозаполнение матрицы 1 случайными значениями\n"); printf("2 - Ввод данных для матрицы 1 с клавиатуры \n"); printf("3 - Заполнение диагонали матрицы 1 единицами\n"); printf("\n"); printf("Вы ввели: "); scanf("%d", &z); switch (z) { case 1: { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) mass[i][j] = rand(); } printf("\n"); printf("---------------\n"); printf("Ваш результат: \n"); printf("---------------\n"); for (i = 0; i < n; i++) { printf("\n"); for (j = 0; j < n; j++) printf("%d\t", mass[i][j]); } printf("\n"); break; } case 2: { for (i = 0; i < n; i++) for (j = 0; j < n; j++) { printf("Введите элемент первой матрицы %d.%d : ", i + 1, j + 1); if (scanf("%d", &mass[i][j]) != 1) { for (;;) { gets(&ans); printf("Вы ввели неверное значение! Попробовать еще? (y / n): "); scanf("%s", &ans); if (strlen(&ans) == 1) { if (ans == 'y') { system("cls"); break; } if (ans == 'n') { system("cls"); exit(0); return 1; } } } } }break; } case 3: { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) if (i == j) mass[i][j] = 1; else mass[i][j] = 0; } printf("\n"); printf("Ваша заполненная матрица 1: "); printf("\n"); for (i = 0; i < n; i++) { printf("\n"); for (j = 0; j < n; j++) printf("%d\t", mass[i][j]); } printf("\n"); }break; } for (;;) { gets(&ans); printf("\n"); printf("Вы хотите редактировать полученную матрицу 1? (y / n): "); scanf("%s", &ans); if (strlen(&ans) == 1) { if (ans == 'y') { printf("Введите номер строки элемента матрицы: "); if (scanf_s("%d", &x)) { printf("Введите номер столбца элемента матрицы: "); if (scanf_s("%d", &y)) { if (x <= i && y <= j) { printf("Введите новое значение элемента матрицы 1 (%d,%d): ", x, y); if (scanf_s("%d", &mass[x - 1][y - 1])) { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d\t", mass[i][j]); } printf("\n"); } } } } } } if (ans == 'n') { break; } } } printf("\n"); printf("----------\n"); printf("Матрица 2\n"); printf("----------\n"); printf("\n"); printf("4 - Автозаполнение матрицы 2 случайными значениями\n"); printf("5 - Ввод данных для матрицы 2 с клавиатуры \n"); printf("6 - Заполнение диагонали матрицы 2 единицами\n"); printf("\n"); printf("Вы ввели: "); scanf("%d", &z); switch (z) { case 4: { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) mass1[i][j] = rand(); } printf("\n"); printf("---------------\n"); printf("Ваш результат:\n"); printf("---------------\n"); for (i = 0; i < n; i++) { printf("\n"); for (j = 0; j < n; j++) printf("%d\t", mass1[i][j]); } printf("\n"); break; } case 5: { for (i = 0; i < n; i++) for (j = 0; j < n; j++) { printf("Введите элемент второй матрицы %d.%d : ", i + 1, j + 1); if (scanf("%d", &mass[i][j]) != 1) { for (;;) { gets(&ans); system("cls"); printf("Вы ввели неверное значение! Попробовать еще? (y / n): "); scanf("%s", &ans); if (strlen(&ans) == 1) { if (ans == 'y') { system("cls"); main(); } if (ans == 'n') { system("cls"); exit(0); return 1; } } } } } break; } case 6: { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) if (i == j) mass1[i][j] = 1; else mass1[i][j] = 0; } printf("\n"); printf("Ваша заполненная матрица 2: "); printf("\n"); for (i = 0; i < n; i++) { printf("\n"); for (j = 0; j < n; j++) printf("%d\t", mass1[i][j]); } printf("\n"); }break; } } return 0; }
Решение задачи: «Stack around the variable was corrupted»
textual
Листинг программы
if (ans == 'y' && getchar()=='\n') do_something();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д