Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.96
NaikoN
2 / 2 / 1
Регистрация: 01.05.2013
Сообщений: 109
#1

Подскажите аски код клавиши ENTER - C++

25.05.2013, 07:54. Просмотров 4522. Ответов 26
Метки нет (Все метки)

Хотел написать программу, которая вводит строки из файла и выводит их потом построчно, но для вывода каждой новой строки нужно нажать клавишу enter. Подскажите аски код клавиши ENTER или подскажи как можно изменить программу, вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int main()
{
   ifstream cin("input.txt");
   //ofstream cout("output.txt");
   vector<string> v;
   string str,str1;
   char enter;
   long long int a=0,b,perem=1,ans=0,i;
   while(getline(cin,str))
   {
       v.push_back(str);
   }
   for(i=0;i<=v.size()-1;i++)
   {
       cout<<v[i]<<endl;
       l:cout<<"'Enter' for continue\n";
       scanf("%c",&enter);
       if(enter=='\n')
       {
       }
       else
       {
           goto l;
       }
   }
   //cout<<str1;
    return 0;
}
P.S. Заранее спаибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2013, 07:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подскажите аски код клавиши ENTER (C++):

прога, которая по нажатой клавише выводит ascii - код символа это клавиши или scan - код самой клавиши.
написать программу, которая по нажатой клавише выводит ascii - код символа этой...

Записываю в массив символ, а записывается его АСКИ код..как быть?
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; int fun(int des,int sist) {...

Нажатие клавиши без ожидания Enter
Как в c++ сделать так, что бы при нажатии какой-то клавиши, программа(консоль)...

Переназначить событие клавиши ENTER в консоли
Добрый день. У меня есть массив, мне его нужно заполнить числами с клавиатуры....

Ожидание клавиши Enter - getch не работает
Друзья привет! Спасибо всем, кто откликнется! Мелкий вопрос, но честно, уже...

Обработка нажатия клавиши без подтвержения enter
Здравствуйте, уважаемые программисты. Подскажите в чем проблема. Вывожу рисунок...

26
nullpointer
46 / 46 / 14
Регистрация: 30.03.2009
Сообщений: 523
25.05.2013, 11:05 #2
Enter - 13
0
NaikoN
2 / 2 / 1
Регистрация: 01.05.2013
Сообщений: 109
25.05.2013, 14:40  [ТС] #3
Подскажите теперь пожалуйста как это можно реализовать, а то, что-то у меня не выходит. Не работает считывание клавиши "ENTER".
0
pizurok
76 / 68 / 19
Регистрация: 05.05.2013
Сообщений: 3,807
25.05.2013, 14:48 #4
C++
1
2
enter = getchar();
if (enter == 13) ...
0
Catstail
Модератор
23540 / 11650 / 2036
Регистрация: 12.02.2012
Сообщений: 18,992
25.05.2013, 14:49 #5
Попробуй вместо scanf:

C++
1
system("pause");
0
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
25.05.2013, 14:51 #6
Цитата Сообщение от NaikoN Посмотреть сообщение
Не работает считывание клавиши "ENTER".
scanf возвращает управление после нажатия Enter
0
pizurok
76 / 68 / 19
Регистрация: 05.05.2013
Сообщений: 3,807
25.05.2013, 14:52 #7
Цитата Сообщение от Catstail Посмотреть сообщение
Попробуй вместо scanf:

C++
1
system("pause");
Эпик фейл, он должен считать символ, и проверить, а не постоянно делать задержку...
0
NaikoN
2 / 2 / 1
Регистрация: 01.05.2013
Сообщений: 109
25.05.2013, 14:56  [ТС] #8
Croessmah, А, что тогда нужно использовать вместо scanf() ????
0
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
25.05.2013, 14:58 #9
Цитата Сообщение от NaikoN Посмотреть сообщение
А, что тогда нужно использовать вместо scanf() ????
ну если под Windows(DOS) тогда можно _getch()
0
pizurok
76 / 68 / 19
Регистрация: 05.05.2013
Сообщений: 3,807
25.05.2013, 15:01 #10
я же отписал вам вариант с getchar(), аналогично можно юзать getch()
0
NaikoN
2 / 2 / 1
Регистрация: 01.05.2013
Сообщений: 109
25.05.2013, 15:01  [ТС] #11
А точно код клавиши enter равен 13???? не 10????
0
pizurok
76 / 68 / 19
Регистрация: 05.05.2013
Сообщений: 3,807
25.05.2013, 15:03 #12
Цитата Сообщение от NaikoN Посмотреть сообщение
А точно код клавиши enter равен 13???? не 10????
Лучше просто ввести гетчаром, проверить на \n:
C++
1
2
enter = getchar();
if (enter == '\n') ...
0
-=ЮрА=-
Заблокирован
Автор FAQ
25.05.2013, 15:04 #13
NaikoN, Enter это виртуальная клавиша результат её нажатия да проявляется в том что в буффере остаётся '\n' ASCI код которого известен. Посмотри как профессионально парсить стрелки, клавиши F, Shift, Ctrl, Esc, Enter и т.д. Стрелки клавиатуры в консоли Виртуальный код клавиши есть в Winbase.h VK_RETURN.

Не по теме:

Цитата Сообщение от NaikoN Посмотреть сообщение
vector<string> v;
- использовать STL и при этом юзать scanf/getch - это всё равно как смотреть 3D на чёрнобелом ламповом телевизоре...

0
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
25.05.2013, 15:04 #14
Цитата Сообщение от NaikoN Посмотреть сообщение
А точно код клавиши enter равен 13???? не 10????
C++
1
2
3
4
5
6
#include <iostream>
#include <conio.h>
int main(){
    char ch=_getch();
    std::cout<<"Key ["<<(unsigned int)ch<<"]"<<std::endl;
}
0
NaikoN
2 / 2 / 1
Регистрация: 01.05.2013
Сообщений: 109
25.05.2013, 15:14  [ТС] #15
pizurok, Я попробовал с getchar() он не верно работает, т. е. сначало он считывает код введеной клавиши и следом клавиши enter и получается сначала вывод Wrong и следом следующую строку
P.S. Может я не верно его использовал, но с _getch() все работает на "УРА".

Добавлено через 1 минуту
-=ЮрА=-, Ну простите, я еше не шибко грамотный

Добавлено через 29 секунд
В конечном итоге у меня получилось так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
#include<fstream>
#include<vector>
#include<conio.h>
using namespace std;
int main()
{
    
   ifstream cin("input.txt");
   //ofstream cout("output.txt");
   vector<string> v;
   string str,str1;
    int x,i;
    while(getline(cin,str))
   {
       v.push_back(str);
   }
    for(i=0;i<=v.size()-1;i++)
   {
    
       l:;
       cout<<"'Enter' for continue\n";
       x=_getch();
       if(x==13)
       {
           cout<<v[i]<<endl;
       }
       else
       {
           cout<<"Wrong\n";
           goto l;
       }
          
   }
    return 0;
}
Добавлено через 1 минуту
Croessmah, Спасибо, помогли.
P.S.S. Всем большое спасибо.
0
-=ЮрА=-
25.05.2013, 15:26
  #16

Не по теме:

Цитата Сообщение от NaikoN Посмотреть сообщение
goto l;
- о боже:facepalm:

0
NaikoN
2 / 2 / 1
Регистрация: 01.05.2013
Сообщений: 109
25.05.2013, 15:29  [ТС] #17
-=ЮрА=-, А что плохого? Я не нашел альтернативы.
0
-=ЮрА=-
Заблокирован
Автор FAQ
25.05.2013, 15:30 #18
Для тех кому может понадобиться код в стандарте и без извратов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
using namespace std;
 
int main()
{
    string data = 
        "This is\n"
        "the test of\n"
        "aplication";
    stringstream ss(data);
    string line;
    vector<string> vec;
    while(getline(ss, line))
        vec.push_back(line);
    for(int i = 0; i < vec.size(); i++)
    {
        cout<<"PRESS ENTER FOR CONTINUE...";
        if(cin.get() == '\n')
            cout<<vec[i]<<endl;
    }
    return 0;
}

Не по теме:

вместо fstream стоит sstream для наглядности

1
Миниатюры
Подскажите аски код клавиши ENTER  
NaikoN
2 / 2 / 1
Регистрация: 01.05.2013
Сообщений: 109
25.05.2013, 15:30  [ТС] #19
P.S. Goto не так уж и плох как о нем отзываются.
0
-=ЮрА=-
25.05.2013, 15:35     Подскажите аски код клавиши ENTER
  #20

Не по теме:

Цитата Сообщение от NaikoN Посмотреть сообщение
-=ЮрА=-, А что плохого? Я не нашел альтернативы.
-
1 - возможность ухода программы в infinte loop
2 - неопределённость поведения кода в случае возникновения ошибки внутри блока метка-goto
есть ещё много ньансов
Цитата Сообщение от NaikoN Посмотреть сообщение
Я не нашел альтернативы.
- выше альтернатива, искал значит плохо.
Указанный оператор безусловного перехода нерекомендован при написании профессиональных кодов.
Хочешь пиши, но кроме как "гавнокод" на код с goto не скажут.
ЗЫ
Цитата Сообщение от NaikoN Посмотреть сообщение
P.S. Goto не так уж и плох как о нем отзываются.
- конечно же ты прав:wall:

0
25.05.2013, 15:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2013, 15:35
Привет! Вот еще темы с ответами:

Остановить ввод после нажатия клавиши enter
for(int i=0;pass;i++) cin&gt;&gt;pass;-перестает вводить символы после третьего....

обработка клавиши enter для textbox'a на форме
пытаюсь сделать обработку кнопки enter, после нажатия которой будут происходить...

Остановить ввод после нажатия клавиши enter
int i = 0; while (mass1 != '\0') { scanf_s(&quot;%a&quot;, &amp;m); i++; mass1 =...

Убрать ожидание нажатия клавиши Enter при выводе
Здравствуйте! Подскажите пожалуйста, вот у меня сейчас вывод есть как бы, но он...


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

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

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