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

Ввод и вывод в СИ++ Как? - C++

Восстановить пароль Регистрация
 
Nezgibaem
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 9
14.04.2014, 19:26     Ввод и вывод в СИ++ Как? #1
Всем привет. Люди, такая проблема. Знаю функцию getche(), которая напрямую, без использования клавиши энтер, выводит нажатую клавишу в консольном приложении типа такого
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
#include "stdafx.h"
#include <stdio.h> 
#include <ctype.h> 
#include <conio.h>
#include "iostream"
 
 
void main(void) 
{
    setlocale(0,"");
int letter,v;
v=0;
printf("Продолжить? (Y/N): ");
do {
    if(v==0)
        v=v+1;
    else
        printf("Все еще продолжать?");
letter = getche ();
letter = toupper (letter);
     }
while ((letter != 'Y') && (letter != 'N') );
 
if (letter == 'Y' )
    printf("\nВы ответили ДА (Y) \n ");
else
    printf("\nВы ответили НЕТ (N) \n ");
getch();
}
Но если в этой программе нажать, скажем, стрелку, то он выдаст какую-то абра -кадабру, а как этого избежать? Если, скажем, мне нужны стрелки для того, что бы передвигатся по вводимому числу и местами править его, как это можно сделать?

Добавлено через 13 минут
Т.е. что бы вы поняли, представьте, вот консольный ввод, вот передо мной строка ввода и ввожу число 1234, вдруг я ошибся, и ввести мне надо 1324. Вот я нажимаю на клавиатуре стрелки, что бы переместиться на нужные цифры. удалить их и ввести новые. Методами cin и scanf эта проблема разрешима, они принимают enter как символ это меня не устраивает, мне нужно все это реализовать прямым вводом getche(), или
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2014, 19:26     Ввод и вывод в СИ++ Как?
Посмотрите здесь:

Запись выражений, ввод–вывод информацииЗапись выражений, ввод–вывод информации C++
ввод n-значного числа, вывод цифр, из которых оно состоит и вывод суммы его цифр. C++
C++ С++Оформить как функцию сортировку элементов отдельной строки. Ввод и вывод элементов матрицы оформить как функцию.
C++ как организовать Буферизированный ввод вывод стурктуры в текстовый файл?
Низкоуровневый ввод-вывод. Как с помощью функции write записать в файл тип int? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
14.04.2014, 19:37     Ввод и вывод в СИ++ Как? #2
Извини, но я ничего не понял.
C++
1
letter = getch();
И что? Что не так у тебя? Все работает.
Nezgibaem
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 9
14.04.2014, 21:34  [ТС]     Ввод и вывод в СИ++ Как? #3
Все работает. Согласен. Сложное число сможешь ввести, а потом его перепечатать по новой?
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
14.04.2014, 21:37     Ввод и вывод в СИ++ Как? #4
Нет, я могу вести только одну цифру, так как
C++
1
letter = getch();
на это и рассчитана.
Nezgibaem
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 9
14.04.2014, 21:55  [ТС]     Ввод и вывод в СИ++ Как? #5
И это тоже верно. Я спрашиваю как ввести сложное число с последующей возможностью перепечатывания. Кажется именно это я спрашивал. Или, хотя бы, посоветуйте ЛЮБУЮ ФУНКЦИИ ВВОДА, которую вы пожелаете, что бы она не воспринимала символы стрелок и энтер, как заносимые в переменную символы.

Добавлено через 6 минут
Просто люди как-то пишут текстовые редакторы, ворд, Блокнот, им же как-то удается переводить каретку в строке. Мне то же самое нужно - перевести каретку в консольной строке нажатием стрелок и ввести несколько символов, всего несколько, строго определенных, что бы не было ничего паразитного.
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
14.04.2014, 22:18     Ввод и вывод в СИ++ Как? #6
да любую книгу откройте из списка Литература C++
и вы увидите что в основном используются потоки ввода вывода std::cin std::cout, а не устаревшие printf
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
14.04.2014, 22:20     Ввод и вывод в СИ++ Как? #7
Цитата Сообщение от Nezgibaem Посмотреть сообщение
Просто люди как-то пишут текстовые редакторы
А при чем тут консоль? Они пишут на ООП, там чуть по другому, и уж там не консоль.
Кстати, вроде Ворд не был написан на С++, а был написан на .NET
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
14.04.2014, 22:21     Ввод и вывод в СИ++ Как? #8
Цитата Сообщение от Nezgibaem Посмотреть сообщение
Просто люди как-то пишут текстовые редакторы, ворд, Блокнот, им же как-то удается переводить каретку в строке. Мне то же самое нужно - перевести каретку в консольной строке нажатием стрелок и ввести несколько символов, всего несколько, строго определенных, что бы не было ничего паразитного.
эти люди прочитали от одной книги по C++ и больше
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
14.04.2014, 22:21     Ввод и вывод в СИ++ Как? #9
Цитата Сообщение от XRuZzz Посмотреть сообщение
увидите что в основном используются потоки ввода вывода
Это понятно Он что-то другое требует, а точнее, сделать редактор в консоле
Я может еще немного голову поломаю, может что и напишу
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
14.04.2014, 22:45     Ввод и вывод в СИ++ Как? #10
Цитата Сообщение от Nezgibaem Посмотреть сообщение
Или, хотя бы, посоветуйте ЛЮБУЮ ФУНКЦИИ ВВОДА, которую вы пожелаете, что бы она не воспринимала символы стрелок и энтер, как заносимые в переменную символы.
специально пошарился по инету, нашёл достаточно примеров исходников такого редактора, все делают стандартно - считывают один символ, после чтения обрабатывают его и перерисовывают весь экран.

конечно все реализации достаточно ужасны.
вот пример на switch
C++
1
2
3
4
5
6
while (1) {
  ch = wgetch(stdscr);
  if (ch == KEY_F(10)) break;
/* Обрабатываем кнопки. В кейсах (case) устанавливаем все переменные, а после
   switch выводим результат на экран.                                         */
  switch (ch) {
однако, я рекомендую шире использовать возможности C++ и разбивать программу на множество классов, файлов и т п... для этого нужно читать литературу.

Добавлено через 6 минут
и не надо забывать про функцию getline
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
15.04.2014, 07:59     Ввод и вывод в СИ++ Как? #11
Цитата Сообщение от XRuZzz Посмотреть сообщение
множество классов
Это уже ООП, как я понял, человеку с ним не больно хочется связываться.
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
15.04.2014, 11:56     Ввод и вывод в СИ++ Как? #12
Цитата Сообщение от Ярослав Никитин Посмотреть сообщение
Это уже ООП, как я понял, человеку с ним не больно хочется связываться.
То есть ему не хочется связываться с книгами по C++ программируя на C++? Как следствие - ему не хочется связываться с C++?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2014, 12:10     Ввод и вывод в СИ++ Как?
Еще ссылки по теме:

Как правильно заменить ввод данных простой на ввод с клавиатуры? C++
Как реализовать ввод адреса файла и соответственно вывод C++
C++ Поменять консольный ввод-вывод на файловый ввод-вывод

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

Или воспользуйтесь поиском по форуму:
DrOffset
15.04.2014, 12:10     Ввод и вывод в СИ++ Как?
  #13

Не по теме:

Цитата Сообщение от Ярослав Никитин Посмотреть сообщение
Кстати, вроде Ворд не был написан на С++, а был написан на .NET
Для справки, пакету MS Office вообще и Word в частности гораздо больше лет, чем .NET фреймфорку, который был разработан только к 2002 году

Yandex
Объявления
15.04.2014, 12:10     Ввод и вывод в СИ++ Как?
Ответ Создать тему
Опции темы

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