Я слышал об обеих функциях, но я никогда не понимал их различий. Есть gets()
для получения строки без нажатия enter и getch()
для получения только одного символа без нажатия клавиши ввода?В чем разница между get() и getch()?
Благодаря
Я слышал об обеих функциях, но я никогда не понимал их различий. Есть gets()
для получения строки без нажатия enter и getch()
для получения только одного символа без нажатия клавиши ввода?В чем разница между get() и getch()?
Благодаря
gets()
был удален в С11 и помечено как осуждается в C++ 11.
Я не слышал о getch()
. Вы имеете в виду getchar()
?
В любом случае, вы должны иметь возможность самостоятельно искать документацию. Эти две функции являются частью cstdio
IIRC, getch - от conio (DOS). – user2864740
[man getch] (http://linux.die.net/man/3/getch) для linux – Mike
Я никогда не понимал их различия
Эти методы имеют явно разные подписи (которые напоминают семантику вполне очевидно, ИМХО):
char *gets(char *str);
int getch(void);
Обратите внимание, что getch()
- это специфичная для платформы нотация, эквивалентная стандартная функция getc()
требует параметра FILE*
.
getch
- это специальная функция платформы или компилятора.
Функция gets
используется для возврата ноль или более символов со стандартного (консольного) ввода.
Edit 1:
В зависимости от реализации компилятора, функция getch
может быть использована для получения символа без ожидания пользователя или получить символ без вторя консоль.
Одна функция получает один символ, другой получает много.
getch()
- это функция в conio.h
на окнах и системах DOS, которые не стандартизированы на C. Используется для получения только одного символа. Он также существует в curses.h
на системах * nix (по словам Майка в комментариях).
gets()
является стандартной функцией на C, которая была удалена в новом стандарте C11
. Вы можете использовать его для ввода строки, но вы должны никогда не использовать ее. Вы не можете использовать его для безопасного ввода строки, поскольку она записывает в память до тех пор, пока вы печатаете. Таким образом, вы можете получить переполнение буфера довольно легко.
Справа, о gets(). Скорее, вы должны использовать fgets() и указать максимальную длину как второй аргумент и stdin для третьего аргумента, как чистую и безопасную замену для gets(). –
'getch' is ** not ** a только функция Window. Это доступно в 'curses.h' для * ix – Mike
@Mike О, вы правы. Я изменю это. –
Также должно быть легко найти и сравнить и сравнить документацию. – crashmstr
Вы знакомы с справочными страницами? – Mike
человек получает 's', а другой получает 'ch'. – JVMATL