2014-02-19 4 views
-2

Я слышал об обеих функциях, но я никогда не понимал их различий. Есть gets() для получения строки без нажатия enter и getch() для получения только одного символа без нажатия клавиши ввода?В чем разница между get() и getch()?

Благодаря

+0

Также должно быть легко найти и сравнить и сравнить документацию. – crashmstr

+1

Вы знакомы с справочными страницами? – Mike

+1

человек получает 's', а другой получает 'ch'. – JVMATL

ответ

-1

gets() был удален в С11 и помечено как осуждается в C++ 11.

Я не слышал о getch(). Вы имеете в виду getchar()?

В любом случае, вы должны иметь возможность самостоятельно искать документацию. Эти две функции являются частью cstdio

+1

IIRC, getch - от conio (DOS). – user2864740

+0

[man getch] (http://linux.die.net/man/3/getch) для linux – Mike

0

Я никогда не понимал их различия

Эти методы имеют явно разные подписи (которые напоминают семантику вполне очевидно, ИМХО):

char *gets(char *str); 

int getch(void); 

Обратите внимание, что getch() - это специфичная для платформы нотация, эквивалентная стандартная функция getc() требует параметра FILE*.

0

getch - это специальная функция платформы или компилятора.

Функция gets используется для возврата ноль или более символов со стандартного (консольного) ввода.

Edit 1:
В зависимости от реализации компилятора, функция getch может быть использована для получения символа без ожидания пользователя или получить символ без вторя консоль.

Одна функция получает один символ, другой получает много.

2

getch() - это функция в conio.h на окнах и системах DOS, которые не стандартизированы на C. Используется для получения только одного символа. Он также существует в curses.h на системах * nix (по словам Майка в комментариях).

gets() является стандартной функцией на C, которая была удалена в новом стандарте C11. Вы можете использовать его для ввода строки, но вы должны никогда не использовать ее. Вы не можете использовать его для безопасного ввода строки, поскольку она записывает в память до тех пор, пока вы печатаете. Таким образом, вы можете получить переполнение буфера довольно легко.

+1

Справа, о gets(). Скорее, вы должны использовать fgets() и указать максимальную длину как второй аргумент и stdin для третьего аргумента, как чистую и безопасную замену для gets(). –

+1

'getch' is ** not ** a только функция Window. Это доступно в 'curses.h' для * ix – Mike

+0

@Mike О, вы правы. Я изменю это. –

Смежные вопросы