Как Сделать, Чтобы, При Вводе В Консоли, Нажатие <enter> Не Пер

Тема в разделе "Общие вопросы по С и С++", создана пользователем alsav22, 15 май 2012.

  1. alsav22

    alsav22 New Member

    Регистрация:
    13 апр 2012
    Сообщения:
    2
    Симпатии:
    0
    Есть некий ввод символов, организованный через cin.get(char &), или через cin.get(char &, int), или через cin.getline(char &, int). Выведена на консоль, например, фраза: "Введите то-то: ". Дальше мигает курсор (приглашение на ввод). Если вводится не то, что нужно, то на следующей строке выводится то же:"Введите то-то: " и курсор на ввод. Всё получается кроме одного: если просто нажать <Enter>, то курсор на ввод переходит на начало следующей строки. Как сделать чтобы этого не происходило? То есть, при нажатии на <Enter>, или курсор оставался на том же месте, или на следующей строке выводилось то же : "Введите то-то: " и курсор на ввод.
     
  2. ixoyz

    ixoyz Member

    Регистрация:
    12 май 2012
    Сообщения:
    16
    Симпатии:
    0
    Тут нужно использовать иной оператор ввода, не cin и не scanf("%s",...).
    Я когда-то в студенчестве писал ввод на основе scanf("%с",...) и даже кажется его нашёл:
    Код (C++):
        printf("Введите %s: ", *q[k]);
    i = 0;
    do
    {scanf("%c", &d[i++]);
    if (i == ld)
    {db = new char[ld];
    for(j = 0; j < ld; j++)
    db[j] = d[j];
    delete d;
    d = new char [ld * 2];
    for(j = 0; j < ld; j++)
    d[j] = db[j];
    ld *= 2;
    delete db;
    }
    }
    while(d[i - 1] != 0x0A);
    d[i - 1] = 0;
     
  3. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    #include <iostream>
    void enter( char *s ) {
    int i;
    for( i = 0;;i ++ ) {
    s[ i ] = std ::cin .get();
    if( s[ i ] == 10 )
    break;
    }
    s[i] = 0;
    }
    int main(){

    char *s = new char[ 10 ];

    do {
    std ::cout << "hello world: ";
    enter( s );
    std ::cout << s << std ::endl;
    } while( strcmp( "bb", s ) );

    delete[] s;

    return 0;
    }
     
  4. alsav22

    alsav22 New Member

    Регистрация:
    13 апр 2012
    Сообщения:
    2
    Симпатии:
    0
    Благодарю!
     
Загрузка...

Поделиться этой страницей