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

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

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

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

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

Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а, необходимо для интерактивного ввода в таблицу, в консольном приложении. Использовал управляющие команды \r, \b, но не получилось.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2011, 14:05     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а
Посмотрите здесь:
Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy C++
Как ввести данные без перехода на новую строку? C++
C++ Как при вводе не переносить двоеточие на новую строку?
C++ Инвертировать строку без использования буфера
cin без перехода на новую строку C++
Работа с файлами. Как добавить переход на новую строку при записи? C++
Как scanf ом прочитать строку string? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
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++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 14:48     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #4
Цитата Сообщение от Ga1ym Посмотреть сообщение
Можно заменить на другую клавишу, или комбинацию, но я не знаю как это сделать.
может тогда через getchar()
OstapBender
583 / 521 / 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
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 17:32     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #7
ну в ОС Виндоус функции getch() и getche();
а считывать в строку с них нужно в цикле
Thinker
Эксперт C++
4221 / 2195 / 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
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 17:51     Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а #10
Thinker, ну всё равно Ентер нажать придётся. а если так - то это проще записать в таком виде:
C
1
scanf("%[^\n]",s);
Thinker
Эксперт C++
4221 / 2195 / 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
583 / 521 / 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++
Переход на новую строку при считывании из файла C++
Мне надо сделать поиск последнего вхождения подстроки s1 в строку s(с функцией LastPos, не strstr). В этом коде просто вхождение подстроки в строку. C++

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

Или воспользуйтесь поиском по форуму:
accept
4820 / 3240 / 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'а
Ответ Создать тему
Опции темы

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