Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Run Time Check Failure


Автор: Kirgston 22.9.2009, 10:30
Всем доброго времени суток! Возник вопросик... собственно писал лабораторную для института... что то не допонял =)

Код

#include <iostream>
#include <windows.h>
#include <stdio.h>

using std::cout;
using std::cin;
using std::endl;



void main()
{
    char str[50]={0};
    int digit=0;
    int sum=0;
enter:
    CharToOem("Введiть число ряду Фiбоначчi яке необхiдно знайти: ",str);
    cout<<endl<<str;
    cin>>digit;
    if (digit<3)
    {
        CharToOem("Число має бути більше 3ох!",str);
        goto enter;
    }

    for ( ;digit>0;digit--)
        sum+=digit;
    CharToOem("Число ряду Фiбоначчi: ",str);
    cout<<endl<<str<<sum<<endl;
    system("pause");
}


Интересно то что под РАД студио 2010 всё хорошо. А под Вижуал С++ вылетает еррор мол Run Time Check Failure #2 - Stack around the variable 'str' was corupted . Какой стек?  smile разве я что то заношу тут в стек?))

Автор: NightmareZ 22.9.2009, 10:34
Цитата(Kirgston @  22.9.2009,  10:30 Найти цитируемый пост)
разве я что то заношу тут в стек?))


Массив у тебя на стеке. Представляешь? А вы то и не знали!  smile 

Автор: ller 22.9.2009, 10:34
1. Текстовая строка длиннее 50 символов
Код

  CharToOem("Введiть число ряду Фiбоначчi яке необхiдно знайти: ",str);

2. Это никогда не выведется. И потом goto  использовать не рекомендуется, только в крайних случаях
Код

        CharToOem("Число має бути більше 3ох!",str);
        goto enter;


3. Как то странно smile
Код

   cout<<endl<<str;


по моему так будет лучше
Код

   cout<<str<<endl;

Автор: Kirgston 22.9.2009, 16:12
Цитата(ller @  22.9.2009,  10:34 Найти цитируемый пост)
Текстовая строка длиннее 50 символов

А на взляд я бы не сказал)))))))))
Но спасибо помогло =)

Автор: bsa 22.9.2009, 17:48
Kirgston, забудь, пожалуйста, об операторе goto, тебе еще рано им пользоваться. В данном случае можно использовать do { ... continue; ... } while(0);

Автор: Kirgston 23.9.2009, 09:07
Цитата(bsa @  22.9.2009,  17:48 Найти цитируемый пост)
Kirgston, забудь, пожалуйста, об операторе goto, тебе еще рано им пользоваться. В данном случае можно использовать do { ... continue; ... } while(0);

Спасибо за совет =)

Просто я курсовую на АСМе писал... а там же нету всяких там... do while, for,while,и т.д. и вообще ничего толкового нету (MCS - 51) вот и весь курсак у меня был построен на call & jmp(в разных интерпритациях), да и не один курсак :Р всё что делал на асм (лабораторные за половину групы  smile ) писал именно так =)

Автор: bsa 23.9.2009, 15:03
Kirgston, причем тут ассемблер? Я тоже в профессионально владею ассемблером Z80 (работа у меня такая), в котором тоже нет ни while, ни for, и что? Это же мне не мешает избегать goto на Си/С++.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)