Ошибка Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted

167
16 декабря 2017, 07:04

Есть такой код:

#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
int main()
{
char str[101];
char tmp[101];
char sym[3];
int n;
cin >> n;
cin.ignore(100, '\n');
gets_s(sym, 4);
int k;
int max = 0;
int lensym = strlen(sym);
for (int i = 0; i < n; i++) {
    gets_s(str, 102);
    int lenstr = strlen(str);
    k = 0;
    for (int j = 0; j < lenstr-1; j++)
        for (int l = 0; l < lensym-1; l++) if (str[j] == sym[l]) k++;
    if (k > max) {
        max = k;
        strcpy_s(tmp, str);
    }
}
puts(tmp);
system("pause");
return 0;
}

После вывода ответа выдаёт ошибку:

Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted.

Где проблема со строкой str?

Answer 1

Вы зачем обманываете систему, и при вызове gets_s() говорите ей, что у Вас массивы на 1 символ больше их реального размера?

READ ALSO
Пересечение двух прямоугольников c++

Пересечение двух прямоугольников c++

Есть два прямоугольника сторони, которого паралельни к осям и они пересекаютсяНам известно:

209
RegOpenKeyExA выдает ошибку: идентификатор не найден

RegOpenKeyExA выдает ошибку: идентификатор не найден

Использую эту функцию в консольном приложении, все ок, если использую в оконном приложении появляется ошибка: идентификатор не найденwindows

168