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

C++

Войти
Регистрация
Восстановить пароль
 
Alexoy
5 / 5 / 0
Регистрация: 07.07.2010
Сообщений: 80
#1

Не сразу закрывающаяся программа - C++

09.07.2010, 22:23. Просмотров 798. Ответов 8
Метки нет (Все метки)

Есть команды в терминале.. вроде telnet или sql, эти программы запускаешь и они остаются открытыми пока не дашь команду, например, quit. Во время работы программы она показывает знак приглашения новой команды ">". Как это можно осуществить в C++?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2010, 22:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не сразу закрывающаяся программа (C++):

Консольная программа запускается и сразу закрывается - C++ Builder
Есть программа, ее компиляции проходит нормально никаких ошибок нет, но как только она запускается как сразу же закрывается....не знаю что...

Чтение текста сразу из всех полей Edit сразу - C++ Builder
Всем привет. У меня на форме есть 6 текстовых полей. Вот файл .h class TForm1 : public TForm { __published: // IDE-managed...

Программа сразу завершается - C++
Здравствуйте! Я написал программу с конфигурацией решения Release, при запуске exe-файла программа тут же закрывается, а то что она выводит...

Почему программа сразу закрывается ? - C++
#include <iostream> using namespace std; int main (void) { int age; cout << "Enter you age: "; cin >> age; if...

Программа закрывается сразу после отработки - C++
программа готова. Запускаю компилятор. Программа выполнена правильно, но окно сразу же закрывается! Какой код нужно вставить, чтобы окно...

Программа сразу после ввода закрывается - C++
Ввела код { int buf; int a; int n,i; cin >> n; for (int i=0; i<n; i++) { ...

8
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
09.07.2010, 22:57 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
 
int main(void){
    char buf[BUFSIZ];
    /* прочие переменные... */
    
    while ( 1 ){
        printf("> ");
        scanf("%s", buf);
        if ( ! strcmp(buf, "quit") || ! strcmp(buf, "QUIT") )
            break;
        printf("Processing command %s\n", buf);
    }
    
    return 0;
}
1
Alexoy
5 / 5 / 0
Регистрация: 07.07.2010
Сообщений: 80
10.07.2010, 00:51  [ТС] #3
Спасибо.. прекрасно!

А строчку "char buf[BUFSIZ];" можно в двух словах объяснить?
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
10.07.2010, 01:01 #4
Цитата Сообщение от Alexoy Посмотреть сообщение
А строчку "char buf[BUFSIZ];" можно в двух словах объяснить?
BUFSIZ - константа, объявленная в stdio.h, соответственно
C
1
char buf[BUFSIZ];
массив символов заведомо (я бы даже сказал - излишне) достаточного размера для хранения строки, содержащей введённую команду.
На всякий случай: в таком виде оно только, как учебный пример, жить может. В реальных приложениях всегда нужно следить за количеством символов, передаваемых в массив (fgets(), strncpy, etc...)
0
Alexoy
5 / 5 / 0
Регистрация: 07.07.2010
Сообщений: 80
10.07.2010, 01:12  [ТС] #5
т.е. если просто написать "buf[10]" потом "больно" не будет?! Работает.. вижу) . Ты про переполнение буфера и подобное?!
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
10.07.2010, 01:38 #6
Цитата Сообщение от Alexoy Посмотреть сообщение
Ты про переполнение буфера и подобное?!
ну да...
0
Alexoy
5 / 5 / 0
Регистрация: 07.07.2010
Сообщений: 80
10.07.2010, 01:45  [ТС] #7
А можно без scanf()? мне бы на argv[] лучше перейти как-нибудь. но так почему-то только argv[0] есть с названием команды. если сказать вывести argv[1], то выдаёт

terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid
Aborted (core dumped)
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
10.07.2010, 01:51 #8
Цитата Сообщение от Alexoy Посмотреть сообщение
А можно без scanf()? мне бы на argv[] лучше перейти как-нибудь.
Минуточку! **argv содержит массив строк, переданных программе в качестве параметров. Чего же тогда программа ждать-то должна? Вот прям рядом тема про argv argc и иже с ними http://www.cyberforum.ru/cpp/thread152233.html
0
Alexoy
5 / 5 / 0
Регистрация: 07.07.2010
Сообщений: 80
12.07.2010, 22:05  [ТС] #9
Да да.. это моя тема и была) тогда как осуществить поддержку ключей внутри теперешней программы?
0
12.07.2010, 22:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2010, 22:05
Привет! Вот еще темы с ответами:

Программа сворачивается сразу же после выполнения - C++
Есть система из трех уравнений, программа написана. Почему при вводе x=0 , y=0 окно вывода сразу сворачивается? #include &lt;iostream&gt; ...

Должна ли программа закрываться сразу после открытия? - C++
Решил изучать С++ (Посоветовал знакомый программист). Начал с прочтения Шилдта &quot;С++. Базовый курс&quot;. Вот моя самая первая программка: /*...

Проблемка (программа сразу закрывается и не выдаёт ответ) - C++
#include &quot;StdAfx.h&quot; #include &quot;iostream&quot; // для cin и cout //#include &quot;conio.h&quot; // для getch #include &quot;cmath&quot; // для выполнения мат....

Что нужно сделать чтобы программа сразу не закрывалась - C++
Что нужно сделать чтобы программа сразу не закрывалась, #include &lt;vcl.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; ...


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

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

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