Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ExFau$t
133 / 116 / 19
Регистрация: 08.05.2012
Сообщений: 762
#1

Ошибка в завершении работы программы - C++

17.05.2014, 19:42. Просмотров 285. Ответов 9
Метки нет (Все метки)

...
C++
1
2
3
4
5
6
7
8
9
10
char s1[30];
std::cout<<"Enter the file name\n";
    std::cin>>s1;
    if ((f=fopen(s1,"r"))==NULL)
    {
        perror("");
        std::cout<<"please enter someone key to exit...\n";
        _getch();
        return 2;           
    }
...
Программа компилируется и работает нормально, но при завершении выдает ошибку: Stack around the variable 's1' was corrupted. Переменная s1 в программе больше не встречается и в циклы не попадает, вводимое имя файла не превышает пяти символов, однако происходит выход за пределы стека. Как устранить такую проблему?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6123 / 5726 / 1852
Регистрация: 18.12.2011
Сообщений: 14,629
Завершенные тесты: 1
17.05.2014, 19:48     Ошибка в завершении работы программы #2
Может, Вы ввели имя файла длиннее, чем 29 символов?
ExFau$t
133 / 116 / 19
Регистрация: 08.05.2012
Сообщений: 762
17.05.2014, 19:50  [ТС]     Ошибка в завершении работы программы #3
"не превышает 5 символов"
zss
Модератор
Эксперт С++
 Аватар для zss
6123 / 5726 / 1852
Регистрация: 18.12.2011
Сообщений: 14,629
Завершенные тесты: 1
17.05.2014, 19:55     Ошибка в завершении работы программы #4
Цитата Сообщение от ExFau$t Посмотреть сообщение
Переменная s1 в программе больше не встречается
Она может быть испорчена при записи в другую переменную.
Приведите код целиком.
ExFau$t
133 / 116 / 19
Регистрация: 08.05.2012
Сообщений: 762
17.05.2014, 20:01  [ТС]     Ошибка в завершении работы программы #5
s1 больше не используется
IrineK
Заблокирован
18.05.2014, 02:41     Ошибка в завершении работы программы #6
Считывайте строку так:

C++
1
2
3
fgets (s1, 30, stdin);
if (s1[strlen(s1)-1] == '\n')
  s1[strlen(s1)-1] - '\0';
ExFau$t
133 / 116 / 19
Регистрация: 08.05.2012
Сообщений: 762
18.05.2014, 09:44  [ТС]     Ошибка в завершении работы программы #7
Считывается имя файла просто с экрана, а не запись из файла
zss
Модератор
Эксперт С++
 Аватар для zss
6123 / 5726 / 1852
Регистрация: 18.12.2011
Сообщений: 14,629
Завершенные тесты: 1
18.05.2014, 11:13     Ошибка в завершении работы программы #8
Цитата Сообщение от ExFau$t Посмотреть сообщение
s1 больше не используется
Это не важно. Выход за границы мог быть в другом массиве,
который расположен в памяти рядом с s1.
alsav22
5411 / 4807 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 11:54     Ошибка в завершении работы программы #9
ExFau$t, вы хотите чтобы вам помогли найти ошибку? Если да, то:
Цитата Сообщение от zss Посмотреть сообщение
Приведите код целиком.
Или сами ищите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2014, 21:50     Ошибка в завершении работы программы
Еще ссылки по теме:

C++ Ошибка при написание программы работы с файлами
C++ Принцип работы программы
C++ Ошибка компилятора при завершении программы
C++ Ошибка "Stack around the variable 'a' was corrupted" при завершении программы
C++ Очистка памяти при завершении работы функции, как правильно возвращать значения?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ExFau$t
133 / 116 / 19
Регистрация: 08.05.2012
Сообщений: 762
18.05.2014, 21:50  [ТС]     Ошибка в завершении работы программы #10
В коде 1500 строк и никаких указаний на места в памяти
Yandex
Объявления
18.05.2014, 21:50     Ошибка в завершении работы программы
Ответ Создать тему
Опции темы

Текущее время: 02:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru