Использование функции getch и функции получения и установки

Эксперты, я сомневаюсь в get (),put () и getch().

  1. Почему мы используем gets() и put (), когда у нас есть scanf() и printf()?
  2. Какая польза от 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.)

Другие вопросы по тегам