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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
sade_
1 / 1 / 0
Регистрация: 02.04.2010
Сообщений: 28
#1

Глюк или ? - C++

01.06.2010, 02:21. Просмотров 1116. Ответов 12
Метки нет (Все метки)

я так понимаю, можно "остановить " консоль(не дать закрыться) разными способами
кто как делает
пишу я себе программу, ставлю как всегда что типа getch()
не ловит!
не останавливается, не ждет моего ввода
ладно!
давай еще!
в итоге тяжелая артиллерия в виде
C++
1
2
3
4
scanf("%d",&k);
getch();
getchar();
system("pause");
и она все равно закрывается!
я уже и заново, в другой файл кинула.там первый раз не закрылась. теперь опять закрывается
то ли у меня крыша поехала, то ли у них?
кто что посоветует?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2010, 02:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Глюк или ? (C++):

Глюк компиляторов или виноват компьютер? - C++
Здравствуйте, меня мучает такой вопрос: мой ноут не может нормально скомпилировать ни одной программы, пробовала 2 компилятора под c++, а...

Глюк системы или кривой код? - C++
Программа должна быть сдана уже завтра, но работать нормально она отказывается. Сделана и тестируется через VS 2008. Проблема такова: ...

Глюк печатания и глюк порчи константы - C++
Дамы и господа! Я столкнулся с двумя глюками, которые не нашёл в списке распространённых ошибок. 1) При попытке распечатать массив...

Глюк с teelg - C++
int x1 = ifile.tellg(); ifile >>s; x1 = ifile.tellg(); сначала х1 = 1, потом идёт считывание символа f и далее х1 становится равным...

Глюк GetWindowModuleFileName - C++
Пишу продвинутый диспетчер файлов без tlhelp32.lib поэтому решил находить ModulePath с помощью GetWindowModuleFileName но столкнулся с...

Глюк gcc? - C++
Компилируя программу в gcc, выводит от части неверный ответ. В code::blocks все в порядке. Как это понимать? Программа выполняет сдвиг...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9633 / 5581 / 948
Регистрация: 25.07.2009
Сообщений: 10,715
01.06.2010, 02:27 #2
Цитата Сообщение от sade_ Посмотреть сообщение
кто что посоветует?
Для начала весь код покажите. Может он до Вашей артиллерии и не доходит...
0
Digan
0 / 0 / 0
Регистрация: 17.05.2010
Сообщений: 12
01.06.2010, 03:26 #3
Всегда останавливал консоль так:
C++
1
scanf("%d");
Всегда работало.
0
sade_
1 / 1 / 0
Регистрация: 02.04.2010
Сообщений: 28
01.06.2010, 03:42  [ТС] #4
C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
int _tmain(int argc, _TCHAR* argv[])
{
    int k;
    bool answer=true;
    setlocale(LC_ALL,"Russian");
    
 
while (answer)
{  
        scanf("%d",&k); 
    
    switch(k)
    {
    case 1:
        {
            puts("Создание базы данных");
            if (CreateDB())
                puts("База данных создана");
            else puts("Файл не создан");
            puts("Нажмите Enter");
            getch();
            
            
            
            break;
            
        }
    }
    
        
    
    
 
 
   
}
 
    return 0;
}
Digan,не работает
0
easybudda
Модератор
Эксперт CЭксперт С++
9633 / 5581 / 948
Регистрация: 25.07.2009
Сообщений: 10,715
01.06.2010, 03:52 #5
sade_, во-первых после case 1: фигурные скобки не нужны - оно и так выполняется до оператора break; а во-вторых
Цитата Сообщение от sade_ Посмотреть сообщение
CreateDB()
а оно где?
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.06.2010, 03:54 #6
C
1
2
3
4
scanf("%d",&k);
getch();
getchar();
system("pause");
scanf("%d",&k); - нужно делать k, а зачем
getch(); - есть не во всех компиляторах, так как не стандарт
getchar(); - есть везде, может ожидать Enter в отличие от getch()
system("pause"); - непереносима между системами, так как требует программу pause
0
Digan
0 / 0 / 0
Регистрация: 17.05.2010
Сообщений: 12
01.06.2010, 11:03 #7
Консоль закрывается потому-что функция main возвращает ноль.
Я лично если не нужно, чтобы она что то возвращала делаю возвращаемый тип void.
C++
1
2
3
4
5
6
void main()
{
   //тут какой-то код
   
   scanf("%d");
}
0
time2die
51 / 51 / 3
Регистрация: 25.05.2010
Сообщений: 182
01.06.2010, 12:32 #8
/me запускал программу в консоли руками и необходимости пользоваться такими извращениями не было
0
easybudda
Модератор
Эксперт CЭксперт С++
9633 / 5581 / 948
Регистрация: 25.07.2009
Сообщений: 10,715
01.06.2010, 12:43 #9
Цитата Сообщение от Digan Посмотреть сообщение
Консоль закрывается потому-что функция main возвращает ноль.
А если функция main() не дошла до return 0, а аварийно завершилась где-то по середине - консоль в фиолетовый цвет окрашивается?

sade_, для отладки именно этого места временно уберите настоящую функцию CreateDB(), если она всё-таки есть (например не включайте заголовочный файл, в котором она объявлена, или просто закомментируйте её) и сделайте вместо неё заглушку
C++
1
bool CreateDB(){ return true; }
Ещё настоятельно рекомендую перечитать в учебнике раздел про оператор switch
1
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
01.06.2010, 13:43 #10
Цитата Сообщение от Digan Посмотреть сообщение
Консоль закрывается потому-что функция main возвращает ноль.
Я лично если не нужно, чтобы она что то возвращала делаю возвращаемый тип void.
Это где ж вы такое вычитали интересно??? ))) Не говоря уже о том, что использование void в качестве возвращаемого значения функции main не соответствует стандарту.
Цитата Сообщение от sade_ Посмотреть сообщение
пишу я себе программу, ставлю как всегда что типа getch()
не ловит!
не останавливается, не ждет моего ввода
Возможно всё дело в scanf. Попробуйте делать так scanf("%d%*c", &k); Если не поможет, то используйте fgets+atoi ))
Цитата Сообщение от sade_ Посмотреть сообщение
в итоге тяжелая артиллерия...
...и она все равно закрывается!
если уж несколько в подряд идущих функций getchar не срабатывают, то скорее всего программа падает, ещё до того как до них доходит.
Цитата Сообщение от easybudda Посмотреть сообщение
Ещё настоятельно рекомендую перечитать в учебнике раздел про оператор switch
А что не так с оператором switch?
1
sade_
1 / 1 / 0
Регистрация: 02.04.2010
Сообщений: 28
01.06.2010, 14:12  [ТС] #11
Цитата Сообщение от easybudda Посмотреть сообщение
А если функция main() не дошла до return 0, а аварийно завершилась где-то по середине - консоль в фиолетовый цвет окрашивается?

sade_, для отладки именно этого места временно уберите настоящую функцию CreateDB(), если она всё-таки есть (например не включайте заголовочный файл, в котором она объявлена, или просто закомментируйте её) и сделайте вместо неё заглушку
C++
1
bool CreateDB(){ return true; }
Ещё настоятельно рекомендую перечитать в учебнике раздел про оператор switch
вся проблема была в CreateDB(закомментили и посмотрели, работает без нее--значит ошибка в ней)
что за фишка, не понятно, хотя там все цивильно
я просто переписала ее и всё норм
насчет switch и скобок
скобки не играют никакой роли, это просто begin/end,в них нет никаких проблем))может они там и не обязательны, просто привычка с C# осталась)
всем спасибо!теперь я даже больше способов остановки знаю)
0
easybudda
Модератор
Эксперт CЭксперт С++
9633 / 5581 / 948
Регистрация: 25.07.2009
Сообщений: 10,715
01.06.2010, 14:37 #12
Цитата Сообщение от sade_ Посмотреть сообщение
скобки не играют никакой роли
Да скобки - это ладно. Просто читается чуть хуже. А вот отсутствие ветви default хоть формально и допускается, но крайне не рекомендуется - может приводить к сложно уловимым ошибкам, когда выполнение программы "проваливается" сквозь оператор switch потому, что не нашлось соответствующего case, а по логике не должно бы. Считается неплохой привычкой хотябы default: break; оставлять...

Добавлено через 3 минуты
Цитата Сообщение от sade_ Посмотреть сообщение
теперь я даже больше способов остановки знаю)
Вы бы лучше на этот пост
Цитата Сообщение от time2die Посмотреть сообщение
запускал программу в консоли руками и необходимости пользоваться такими извращениями не было
внимание обратили...
0
sade_
1 / 1 / 0
Регистрация: 02.04.2010
Сообщений: 28
01.06.2010, 16:49  [ТС] #13
честно говоря,про что он говорит, я не поняла))
объясни)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2010, 16:49
Привет! Вот еще темы с ответами:

глюк с определениями - C++
вот файл unit.h #ifndef __unit_h__ #define __unit_h__ const int MAXHELF=100; struct FPOINT { float x; float y; };

глюк в программе - C++
Дан целочисленный квадратный массив размера m* n, где m и n- натуральные числа. Найти наименьшее из значений элементов столбца, который...

Странный глюк цикла while - C++
Возник весьма странный глюк, связанный с циклом while. Имеется кусок программы: bool = true; while (bo=true){ ...

Странный глюк с биндом - C++
static void deXML(XMLBlock* RootBlock,Node* RN=NULL){ std::list<boost::thread> T; Node* SN=new...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.06.2010, 16:49
Ответ Создать тему
Опции темы

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