Я слышал об обеих функциях, но никогда не понимал их различий. Является gets()
для получения строки без нажатия Enter и getch()
для получения только одного символа без нажатия Enter?
Спасибо
getch()
это функция в conio.h
в системах Windows и DOS, которые не стандартизированы в C. Он используется для получения только (точно) одного символа. Он также существует в curses.h
в системах * nix (по словам Майка в комментариях).
gets()
стандартная функция в C, которая была удалена в новом C11
стандарт. Вы можете использовать его для ввода строки, но вы должны никогда не используй это. Вы не можете использовать его для безопасного ввода строки, потому что он пишет в память, пока вы печатаете. Таким образом, вы можете легко получить переполнение буфера.
Я никогда не понимал их различия
Эти методы имеют явно разные подписи (которые, очевидно, очень похожи на семантику ИМХО):
char *gets( char *str );
int getch(void);
Обратите внимание, что getch()
обозначение для конкретной платформы, определенный эквивалентный стандарт getc()
функция хочет FILE*
параметр.
getch
является платформой или функцией, специфичной для компилятора.
gets
Функция используется для возврата нуля или более символов из стандартного (консольного) ввода.
Изменить 1:
В зависимости от реализации вашего компилятора, getch
Функция может использоваться, чтобы получить символ, не ожидая пользователя, или получить символ, не отражая эхо на консоль.
Одна функция получает один символ, другая получает много.
gets()
был удален в C11 и помечен как устаревший в C ++ 11.
Я не слышал о getch()
, Ты имеешь ввиду getchar()
?
В любом случае вы должны иметь возможность самостоятельно просматривать документацию. Эти две функции являются частью cstdio