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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.77
Ga1ym
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 14:05     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #1
Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а, необходимо для интерактивного ввода в таблицу, в консольном приложении. Использовал управляющие команды \r, \b, но не получилось.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2011, 14:05     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а
Посмотрите здесь:

Как scanf ом прочитать строку string? C++
C++ Инвертировать строку без использования буфера
Переход на новую строку при записи в файл C++
cin без перехода на новую строку C++
C++ Как при вводе не переносить двоеточие на новую строку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
13.09.2011, 14:09     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #2
Ga1ym, встречный вопрос: как программадолжна угадать, что ввод закончен?
Ga1ym
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 14:40  [ТС]     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #3
Можно заменить на другую клавишу, или комбинацию, но я не знаю как это сделать.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 14:48     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #4
Цитата Сообщение от Ga1ym Посмотреть сообщение
Можно заменить на другую клавишу, или комбинацию, но я не знаю как это сделать.
может тогда через getchar()
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 16:54     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #5
без ентера только небуферизированный ввод
Ga1ym
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 17:28  [ТС]     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #6
А как произвести небуферизированный ввод?
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 17:32     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #7
ну в ОС Виндоус функции getch() и getche();
а считывать в строку с них нужно в цикле
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 17:45     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #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;
}
Ga1ym
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 17:51  [ТС]     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #9
Необходимо после ввода чтобы курсор оставался на той же строке, для дальнейшего вывода.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 17:51     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #10
Thinker, ну всё равно Ентер нажать придётся. а если так - то это проще записать в таком виде:
C
1
scanf("%[^\n]",s);
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 18:09     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #11
Цитата Сообщение от OstapBender Посмотреть сообщение
Thinker, ну всё равно Ентер нажать придётся. а если так - то это проще записать в таком виде:
C
1
scanf("%[^\n]",s);
Зато в строку попадут только символы до символа ограничителя END

Добавлено через 3 минуты
Цитата Сообщение от OstapBender Посмотреть сообщение
Thinker, ну всё равно Ентер нажать придётся. а если так - то это проще записать в таком виде:
C
1
scanf("%[^\n]",s);
Кстати, OstapBender, а где про такую интересную конструкцию почитать можно?
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 18:13     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #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; // ограничим.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2011, 04:08     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.09.2011, 04:08     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #13
Цитата Сообщение от Thinker
Кстати, OstapBender, а где про такую интересную конструкцию почитать можно?
C99(draft)
Yandex
Объявления
14.09.2011, 04:08     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а
Ответ Создать тему

Метки
стандарт
Опции темы

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