Использование функции getch и функции получения и установки
Эксперты, я сомневаюсь в get (),put () и getch().
- Почему мы используем gets() и put (), когда у нас есть scanf() и printf()?
- Какая польза от getch().
Пожалуйста, объясните это простым языком, потому что я новичок.
Заранее спасибо.:)
2 ответа
gets
больше не существует (кроме как в устаревшей среде, такой как печально известная TurboC), используйте fgets
вместо.
fgets
читает одну строку текста из файла, в том числе из терминала (стандартный вывод)puts
записывает одну строку текста в терминал (стандартный вывод)fputs
записывает одну строку текста в файл, включая терминал (стандартный вывод)getch
читает по символу со стандартного ввода (терминала)printf
а друзья позволяют распечатывать форматированный выводscanf
и друзья позволяют читать форматированный ввод.
Почему мы используем gets() и put (), когда у нас есть scanf() и printf()?
Мы не используем gets()
Эта функция была настолько плохо спроектирована, что была помечена как устаревшая 18 лет назад и, наконец, полностью удалена из языка Си 6 лет назад. Если кто-то научил вас использовать gets()
Вам нужно найти более обновленный источник обучения. См. Какие функции C из стандартной библиотеки следует / следует избегать?,
puts(str)
используется только в качестве микрооптимизации printf("%s", str)
, puts()
традиционно немного быстрее, чем printf()
, так как он не должен анализировать строку формата. Сегодня это преимущество производительности не является проблемой.
Тем не мение, puts()
гораздо безопаснее, чем printf()
, Вы можете написать плохой код как printf("%s", pointer_to_int)
и может скомпилироваться без предупреждений. Но puts(pointer_to_int)
никогда не будет компилироваться без предупреждений / ошибок.
Как правило, большая часть stdio.h опасна и небезопасна из-за плохой безопасности типов. Этого избегают в профессиональном, производственном коде качества. Для студенческих / любительских целей можно использовать printf / scanf.
Какая польза от getch()
getch()
было нестандартным расширением C, которое позволяло программам читать символ из стандартного ввода, не выводя набранный символ в стандартный вывод (экран).
Эта функция была популярна еще во времена MS DOS, когда Borland Turbo C был доминирующим компилятором. Поскольку у Turbo C это было, некоторые другие компиляторы также начали поддерживать его вместе с нестандартным conio.h
библиотека. Мы говорим в начале 1990-х.
Вы не должны использовать эту функцию в современном программировании на Си.
(Хотя это можно реализовать самостоятельно с помощью различных вызовов API, как в этом примере для Windows.)