Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.97/37: Рейтинг темы: голосов - 37, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
1

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

13.09.2011, 14:05. Показов 7726. Ответов 12

Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а, необходимо для интерактивного ввода в таблицу, в консольном приложении. Использовал управляющие команды \r, \b, но не получилось.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2011, 14:05
Ответы с готовыми решениями:

Как ввести символьную строку и переписать в новую строку без пробелов?
Как ввести символьную строку и переписать в новую строку без пробелов?Пожалуйста помогите! Формат...

Ввести символьную строку и переписать в новую строку без пробелов
ВВЕСТИ СИМВОЛЬНУЮ СТРОКУ И ПЕРЕПИСАТЬ В НОВУЮ СТРОКУ БЕЗ ПРОБЕЛОВ

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

Как заменить переход на новую строку на пробел, а пустую строку на переход на новую строку?
Подскажите как из одного текстового файла, в котором в каждом ряде содержится не больше одного...

12
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11032 / 6984 / 1651
Регистрация: 25.07.2009
Сообщений: 12,734
13.09.2011, 14:09 2
Ga1ym, встречный вопрос: как программадолжна угадать, что ввод закончен?
0
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 14:40  [ТС] 3
Можно заменить на другую клавишу, или комбинацию, но я не знаю как это сделать.
0
Эксперт С++
4258 / 2232 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 14:48 4
Цитата Сообщение от Ga1ym Посмотреть сообщение
Можно заменить на другую клавишу, или комбинацию, но я не знаю как это сделать.
может тогда через getchar()
1
592 / 530 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 16:54 5
без ентера только небуферизированный ввод
0
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 17:28  [ТС] 6
А как произвести небуферизированный ввод?
0
592 / 530 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 17:32 7
ну в ОС Виндоус функции getch() и getche();
а считывать в строку с них нужно в цикле
1
Эксперт С++
4258 / 2232 / 203
Регистрация: 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
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 4
13.09.2011, 17:51  [ТС] 9
Необходимо после ввода чтобы курсор оставался на той же строке, для дальнейшего вывода.
0
592 / 530 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 17:51 10
Thinker, ну всё равно Ентер нажать придётся. а если так - то это проще записать в таком виде:
C
1
scanf("%[^\n]",s);
1
Эксперт С++
4258 / 2232 / 203
Регистрация: 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
592 / 530 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
13.09.2011, 18:13 12
ну, не знаю, например здесь
http://lord-n.narod.ru/downloa... /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
4855 / 3276 / 467
Регистрация: 10.12.2008
Сообщений: 10,570
14.09.2011, 04:08 13
Цитата Сообщение от Thinker
Кстати, OstapBender, а где про такую интересную конструкцию почитать можно?
C99(draft)
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2011, 04:08

Как считать массив - чтобы не было переносов на новую строку
Пример кода: &lt;?php $fp = file(&quot;1.txt&quot;); $fp1 = file(&quot;1-1.txt&quot;); ?&gt; &lt;br&gt; &lt;a href=&quot;&lt;?php...

Как вводить переменную без перехода в новую строку?
Как после ввода строки не переходить в новую? Не очень понимаю, есть несколько тем, но там нет...

Как ввести данные без перехода на новую строку?
Собственно вопрос в заголовке. for (int i = 0; i &lt; 4; i++) { for (int j = 0; j &lt; 3; j++) {...


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

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

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