0

Приветствую. Я где-то увидел кусок кода С++ (или С - хз :) ) и решил его откомпилировать и глянуть, что выйдет ^_^. Вот мой код :

#include <stdio.h>
int main(int argc, char * argv[])
{
    printf("Hello, World\n");
    return 0;
}

Эм...Как бы вот :). После компиляции под Виндовс появляется .exe файлик. При нажатии на него открываеться консолька (на доли секунды) и закрывается... Как сделать так, чтобы она не закрывалась? :)

ps. ПрОфИ - Пожайлуста не материте - С++ ещё не копался а узнать интересно :).
pps. Дайте обещание что Майкрософт этот кусок кода не покажете - А то мало ли в свои программы внедрят :DDDDDD
ppps. Заранее Спасибо :)

BomBom
  • 332
  • 2
    для второго и третьего пост-скриптума используются сокращения PPS и PPPS, а не PSS и PSSS – andrybak Oct 20 '11 at 15:48
  • 1
    Хороший ответ на вопрос...Я вижу вы профи :) Спасибо. – BomBom Oct 20 '11 at 15:53
  • перед
    return 0;

    допишите строчку

    system("pause");
    – чипик Oct 20 '11 at 16:35
  • Ну это надо же какое уважительное отношение к компиляции - пишите ее имя с большой буквы... – skegg Oct 20 '11 at 16:47
  • А то! Перестанет работать и фиг вам а не .exe файл... :D Спасибо :) – BomBom Oct 20 '11 at 16:57

6 Answers6

4

Вариант с system("pause")

#include <cstdio>
#include <cstdlib> // Здесь объявлена функция system()
int main(int argc, char * argv[])
{
    printf("Hello, World\n");
    system ("pause");
    return 0;
}

Функция system() вызывает новый экземпляр командного интерпретатора и запускает в нем команду из строки, переданной ей в качестве параметра.

C getchar():

#include <cstdio>
int main(int argc, char * argv[])
{
    printf("Hello, World\n");
    getchar();
    return 0;
}

Функция getchar() служит для чтения и передачи какой-либо переменной введенного в командной строке символа. Она будет ждать, пока что-то не будет введено. Тут она просто ждет и после нажатия ENTER продолжается выполнение программы, а введенный символ никуда не передается. Поэтому и ложный вызов.

angry
  • 8,677
  • 18
  • 74
  • 182
skegg
  • 23,934
  • 2
  • 38
  • 69
2

И наконец, самый простой и самый жуткий вариант: for(;;);

Жуткий он тем, что загружает ядро ЦП на 100%.

devoln
  • 5,441
  • реально жуть :) не буду побывать - мало ли :D а плюсиГ держи... – BomBom Nov 05 '11 at 14:13
  • как вариант while (1); – skegg Nov 05 '11 at 22:28
  • Некоторые компиляторы выдают предупреждение, что в while(1) используется константное выражение. Поэтому лучше использовать for(;;). – devoln Nov 06 '11 at 06:53
  • Да видели мы их предупреждения.... – skegg Nov 06 '11 at 08:26
  • А кстати, какие именно компиляторы? А вариант while(1=1) пройдет? – skegg Nov 06 '11 at 08:27
  • Visual C++ например. По крайней мере, с уровнем предупреждений 4. – devoln Nov 06 '11 at 09:24
1

Несколько вариантов, дописать system("pause"); сделать фиктивный ввод: cin.get(); getchar(); etc., что-то да должно остановить, экспериментируйте ;)

angry
  • 8,677
  • 18
  • 74
  • 182
  • Я вроде сказал, что не особо шарю... сделать фиктивный ввод: cin.get(); getchar(); etc. - Для меня это ни о чём не говорит ^_^

    ps. system("pause"); - Написал куда только можно (вроде бы). Компилятор ругается, мол, ошибка. Я на Dev-cpp компилирую :)
    – BomBom Oct 20 '11 at 15:38
1

Как вариант. Создаешь .bat файл в папке с exe-шниками с таким содержимым "cmd" (без ковычек). При его запуске открывается консоль и из неё уже запускаешь нужный файл.

Koww
  • 11
0

А ещё можно создать bat или cmd файл в папке с программой с таким содержимым:

program
pause

где program - это название программы. Я этим спобом запускаю чужие консольные программы, чтобы прочитать вывод.

devoln
  • 5,441
-1

Держи код (работающий, но неправильный :)), заодно выучишь потоковые функции stdio:

#include <stdio.h>

int main(int argc, char *argv[]) { printf("Hello, World\n"); printf("Press ENTER for exit...\n"); scanf("enter key");
return 0; }

  • 1
    Если обьяснишь чем неправильный ещё и плюсиг поставлю :) – BomBom Oct 20 '11 at 16:40
  • Да просто парень написал, что он не копался еще в плюсах-крестах. А я сам C++ уже последний раз использовал очень давно. Помню простые функции cin/cout для консоли, а для форматированного ввода-вывода printf... Вот и безмозгло решил, что надо заставить юзера нажать Enter, т.е. "\n". – Вячеслав Кириченко Oct 20 '11 at 17:03