Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
sade_
1 / 1 / 0
Регистрация: 02.04.2010
Сообщений: 28
1

Глюк или ?

01.06.2010, 02:21. Просмотров 1161. Ответов 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
Ответы с готовыми решениями:

Глюк системы или кривой код?
Программа должна быть сдана уже завтра, но работать нормально она отказывается....

Глюк компиляторов или виноват компьютер?
Здравствуйте, меня мучает такой вопрос: мой ноут не может нормально...

Глюк печатания и глюк порчи константы
Дамы и господа! Я столкнулся с двумя глюками, которые не нашёл в списке...

Глюк с teelg
int x1 = ifile.tellg(); ifile >>s; x1 = ifile.tellg(); сначала х1 = 1,...

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

12
easybudda
Модератор
Эксперт CЭксперт С++
10113 / 6019 / 1510
Регистрация: 25.07.2009
Сообщений: 11,408
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Эксперт С++
10113 / 6019 / 1510
Регистрация: 25.07.2009
Сообщений: 11,408
01.06.2010, 03:52 5
sade_, во-первых после case 1: фигурные скобки не нужны - оно и так выполняется до оператора break; а во-вторых
Цитата Сообщение от sade_ Посмотреть сообщение
CreateDB()
а оно где?
0
accept
4833 / 3255 / 455
Регистрация: 10.12.2008
Сообщений: 10,569
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 / 10
Регистрация: 25.05.2010
Сообщений: 182
01.06.2010, 12:32 8
/me запускал программу в консоли руками и необходимости пользоваться такими извращениями не было
0
easybudda
Модератор
Эксперт CЭксперт С++
10113 / 6019 / 1510
Регистрация: 25.07.2009
Сообщений: 11,408
01.06.2010, 12:43 9
Цитата Сообщение от Digan Посмотреть сообщение
Консоль закрывается потому-что функция main возвращает ноль.
А если функция main() не дошла до return 0, а аварийно завершилась где-то по середине - консоль в фиолетовый цвет окрашивается?

sade_, для отладки именно этого места временно уберите настоящую функцию CreateDB(), если она всё-таки есть (например не включайте заголовочный файл, в котором она объявлена, или просто закомментируйте её) и сделайте вместо неё заглушку
C++
1
bool CreateDB(){ return true; }
Ещё настоятельно рекомендую перечитать в учебнике раздел про оператор switch
1
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
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Эксперт С++
10113 / 6019 / 1510
Регистрация: 25.07.2009
Сообщений: 11,408
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
01.06.2010, 16:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2010, 16:49

глюк с определениями
вот файл unit.h #ifndef __unit_h__ #define __unit_h__ const int...

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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