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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.77
Ga1ym
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
#1

Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а - C++

13.09.2011, 14:05. Просмотров 4375. Ответов 12

Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а, необходимо для интерактивного ввода в таблицу, в консольном приложении. Использовал управляющие команды \r, \b, но не получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2011, 14:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а (C++):

Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy - C++
Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy

Как ввести данные без перехода на новую строку? - C++
Собственно вопрос в заголовке. for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { cin >> arr; } } Если вводить...

Как при вводе не переносить двоеточие на новую строку? - C++
Задача: Написать программу, в которой осуществляется перегрузка операции сложения. Разработать класс time, в состав которого включить...

Инвертировать строку без использования буфера - C++
Всем привет. Инвертировать строку с использованием второй строки достаточно просто. А как инвертировать строку без использования...

cin без перехода на новую строку - C++
Как сделать, чтобы после считывания cin курсор не переводился на новую строку, а оставался на старой?

Работа с файлами. Как добавить переход на новую строку при записи? - C++
Задача такая, дан текстовый файл (с информацией о людях Фамилия Имя Отчество) и надо создать второй файл с записями вида «Фамилия И.О.»,...

12
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,847
13.09.2011, 14:09 #2
Ga1ym, встречный вопрос: как программадолжна угадать, что ввод закончен?
0
Ga1ym
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 14:40  [ТС] #3
Можно заменить на другую клавишу, или комбинацию, но я не знаю как это сделать.
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 14:48 #4
Цитата Сообщение от Ga1ym Посмотреть сообщение
Можно заменить на другую клавишу, или комбинацию, но я не знаю как это сделать.
может тогда через getchar()
1
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 16:54 #5
без ентера только небуферизированный ввод
0
Ga1ym
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 17:28  [ТС] #6
А как произвести небуферизированный ввод?
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 17:32 #7
ну в ОС Виндоус функции getch() и getche();
а считывать в строку с них нужно в цикле
1
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 17:45 #8
Если в качестве END выбрать символ-ограничитель, то можно так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#define N 512
#define END '\n'
 
int main( )
{
   char c, s[N];
   int i = 0;
   while ((c = getchar()) != END && i < N - 1)
      s[i++] = c;
   s[i] = '\0';
   return 0;
}
1
Ga1ym
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 17:51  [ТС] #9
Необходимо после ввода чтобы курсор оставался на той же строке, для дальнейшего вывода.
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 17:51 #10
Thinker, ну всё равно Ентер нажать придётся. а если так - то это проще записать в таком виде:
C
1
scanf("%[^\n]",s);
1
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 18:09 #11
Цитата Сообщение от OstapBender Посмотреть сообщение
Thinker, ну всё равно Ентер нажать придётся. а если так - то это проще записать в таком виде:
C
1
scanf("%[^\n]",s);
Зато в строку попадут только символы до символа ограничителя END

Добавлено через 3 минуты
Цитата Сообщение от OstapBender Посмотреть сообщение
Thinker, ну всё равно Ентер нажать придётся. а если так - то это проще записать в таком виде:
C
1
scanf("%[^\n]",s);
Кстати, OstapBender, а где про такую интересную конструкцию почитать можно?
1
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 18:13 #12
ну, не знаю, например здесь
http://lord-n.narod.ru/download/book...C/13/scanf.htm
ну и раз уж автор такой любитель спасибки ставить то напишу пример использования getch()

C
1
2
3
4
5
6
7
char str[100];
int i=0;
char ch;
while ((ch=getche())!='8') { // читать пока не нажмем '8'
str[i++]=ch;
} 
str[i]=0; // ограничим.
2
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.09.2011, 04:08 #13
Цитата Сообщение от Thinker
Кстати, OstapBender, а где про такую интересную конструкцию почитать можно?
C99(draft)
2
14.09.2011, 04:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2011, 04:08
Привет! Вот еще темы с ответами:

Как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле? - C++
подскажите пожалуйста, как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле?. ПС не...

Составить новую строку из всех гласных латинских букв исходной строки без повторений - C++
доброго времени суток. прошу помоч знающих людей. вобщем задание такое.. есть строка, выбрать из нее все латинские гласные буквы и...

Переход на новую строку при записи в файл - C++
Привет всем, я пишу такую программу.. С клавиатуры вводятся две матрицы, на выбор пользователя она записывается в файл либо в виде...

Переход на новую строку при считывании из файла - C++
Мне нужно прочитать из файла структуру Student, в которой указываются такие данные студента: фамилия, имя, отчество, пол, оценка по...


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

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

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