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

Чтение пробела из консоли. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.60
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
25.05.2010, 20:38     Чтение пробела из консоли. #1
C++
1
2
3
4
5
    temp = new char[20];
temp2 = new char[20];
 
    cout<<"Введите Название События: ";scanf("%s",temp);
    cout<<"Введите Описание События: ";scanf("%s",temp2);
Если вводить текст с пробелами, он считывается некорректно.
Тоесть если при первом запросе я ввожу Bubu Lala, то до пробела считывает в переменную temp, а после сразу в temp2(без второго запроса). А мне нужно, чтобы в temp содержался текст с пробелами.
Что делаю не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Adler
 Аватар для Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
25.05.2010, 21:12     Чтение пробела из консоли. #2
C++
1
char C[1024*16];do{cin.getline(C,sizeof(C));}while(!C[0]);
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
25.05.2010, 21:33  [ТС]     Чтение пробела из консоли. #3
Благодарю за ответ, но Есть ли ещё какие-то варианты?
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
25.05.2010, 21:36     Чтение пробела из консоли. #4
используй gets(temp); - это для корректного считывания строк
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
25.05.2010, 21:40     Чтение пробела из консоли. #5
попробуйте перед каждым его использованием ставить
C++
1
fflush(stdin);
это очищает буфер ввода, не давая туда просочиться мусору.
C++
1
2
3
4
5
temp = new char[20];
temp2 = new char[20];
 
        cout<<"Введите Название События: ";fflush(stdin);gets(temp);
        cout<<"Введите Описание События: ";fflush(stdin);gets(temp2);
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
25.05.2010, 21:45  [ТС]     Чтение пробела из консоли. #6
Цитата Сообщение от Iworb Посмотреть сообщение
попробуйте перед каждым его использованием ставить
C++
1
fflush(stdin);
это очищает буфер ввода, не давая туда просочиться мусору.
C++
1
2
3
4
5
temp = new char[20];
temp2 = new char[20];
 
        cout<<"Введите Название События: ";fflush(stdin);gets(temp);
        cout<<"Введите Описание События: ";fflush(stdin);gets(temp2);
Спасибище!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2010, 18:02     Чтение пробела из консоли.
Еще ссылки по теме:

C++ Чтение данных из консоли
Чтение с клавиатуры ситемной клавиши F5 в консоли C++
Удаление пробела из строки C++

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

Или воспользуйтесь поиском по форуму:
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
26.05.2010, 18:02     Чтение пробела из консоли. #7
Странно видеть одновременно cout и fflush - они из разных библиотек
и могут быть косяки.
gets() вообще нельзя использовать.
Тогда уже cout, cin
Или printf, fgets
Yandex
Объявления
26.05.2010, 18:02     Чтение пробела из консоли.
Ответ Создать тему
Опции темы

Текущее время: 08:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru