Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2017, 15:19   #1
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию ввод одного символа

существует ли в Си ф-ция, подобная readkay в Паскале? Так чтобы просто нажимаешь на клавишу - и все, символ записан... а то scanf или getchar работают пока не нажмешь enter, при этом считывается также и этот символ!
tutejshy вне форума Ответить с цитированием
Старый 18.07.2017, 16:08   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

getch или getche
waleri вне форума Ответить с цитированием
Старый 18.07.2017, 17:29   #3
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

Это Си? В каком заголовочном файле эти ф-ции?
tutejshy вне форума Ответить с цитированием
Старый 18.07.2017, 17:37   #4
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

А, нашел, это conio.h, так? Этот вариант не подходит, так как у меня Linux - компилятор не поддерживает его в Unix системах.
tutejshy вне форума Ответить с цитированием
Старый 18.07.2017, 18:26   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Сначала мне показалось, что вас забанили в гугле... потом оказалось, что не показалось.

tcsetattr + сброс ICANON ( эхо по желанию)
getchar
восстановление настроек терминала
p51x вне форума Ответить с цитированием
Старый 18.07.2017, 18:30   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Под линкусом надо будет ещё и терминал переводить в режим без буферизации
https://stackoverflow.com/questions/...-of-c-in-linux
Black Fregat вне форума Ответить с цитированием
Старый 18.07.2017, 19:58   #7
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

Цитата:
Сначала мне показалось, что вас забанили в гугле... потом оказалось, что не показалось.
Ха-ха, очень смешно)) Вот только первая ссылка гугл как раз и показывает, что компилятор на Unix системах не поддерживает conio.h
tutejshy вне форума Ответить с цитированием
Старый 18.07.2017, 20:39   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

У вас и гугл другой...
https://www.google.com/search?q=getc...hrome&ie=UTF-8

Первая ссылка же с подробным решением:
https://stackoverflow.com/questions/...etche-in-linux

как, впрочем, и вторая, и третья...
p51x вне форума Ответить с цитированием
Старый 18.07.2017, 21:12   #9
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

ну а вопрос ты видел? С чего мне сразу кидаться искать как работает getch? Я спрашивал: есть ли ф-ции такие-то. Мне ответили: getch - лезу найти что такое getch - и первая ссылка (как и другая и третья) говорит, что conio.h нет на Unix. Откуда мне было знать, что кроме getch ничего нет?

PS. Я ценю помощь, за это спасибо, но засранцем быть не обязательно.

Последний раз редактировалось tutejshy; 18.07.2017 в 21:18.
tutejshy вне форума Ответить с цитированием
Старый 18.07.2017, 21:17   #10
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

Если кто еще будет читать эту тему и кому нужен будет ответ:
Код:
#include <stdio.h>
#include <termios.h>
#include <unistd.h>

int mygetch( )
{
    struct termios oldt,
    newt;
    int ch;
    tcgetattr( STDIN_FILENO, &oldt );
    newt = oldt;
    newt.c_lflag &= ~( ICANON | ECHO );
    tcsetattr( STDIN_FILENO, TCSANOW, &newt );
    ch = getchar();
    tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
    return ch;
}
ф-ция mygetch() возвращает еденичный символ, введенный с клавы.
tutejshy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена одного символа на другой nlk Microsoft Office Word 1 24.06.2014 20:54
Замена одного символа другим в строке D!zel Общие вопросы Delphi 8 16.03.2013 17:30
Замена одного символа на другой W0o0Lf Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.12.2012 18:31
atoi для одного символа? WebbMan Общие вопросы C/C++ 4 11.12.2012 17:30
Ввод и обработка строго одного символа Кипящий чайник Общие вопросы C/C++ 16 04.12.2010 16:43