В чем разница между putch() и putchar()?

Итак, я новичок в C.

Я пытался выяснить, в чем именно разница между putch() и putchar()? Я попытался погуглить свои ответы, но все, что я получил, было тем же самым скопированным сообщением, в котором говорилось:

putchar(): Эта функция используется для вывода на экран одного символа, и это может быть любой символ из набора символов C (т.е. это могут быть печатные или непечатаемые символы).

putch(): Функция putch() используется для отображения всех буквенно-цифровых символов на стандартном устройстве вывода, таком как монитор. эта функция отображает один символ за раз.

Поскольку английский не мой родной язык, я немного потерялся. Есть ли непечатаемые символы в C? Если так, то кто они? И почему putch не может дать такие же результаты?

Я пытался поискать в Google набор символов C и все имеющиеся буквенно-цифровые символы, но, как бы ни шло мое тестирование, на самом деле не было ничего, что одна функция могла бы напечатать, а другая - нет.

В любом случае, я немного потерян.

Может ли кто-нибудь помочь мне? Спасибо!

TLDR; что putchar() можно, что putch() нельзя? (или наоборот или что-то idk)

Не знаю, надеялся, что между ними будет видимая разница, но, похоже, не нашел ее.

Что такое putch()? Вы имеете в виду putc()? Спецификации языка C не определяют функцию с именем putch().

John Bollinger 20.11.2022 17:55

Разница в том, что putchar — это стандартная функция, которая будет работать везде, тогда как putch — это, IIRC, нестандартная функция MS-DOS, которая сегодня полностью устарела. Я призываю вас всегда использовать putchar и забыть о putch.

Steve Summit 20.11.2022 17:57

См. также аналогичный вопрос о getch и getchar.

Steve Summit 20.11.2022 17:59

Это отличный вопрос, и я тоже задавался этим вопросом.

Neil 20.11.2022 20:08
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
3
4
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

putch заменяет символ новой строки (\n)

putchar — это функция на языке программирования C, которая записывает один символ в стандартный вывод.

Этот ответ вводит в заблуждение: putchar также выполняет преобразование новой строки в устаревших системах, которые до сих пор используют это древнее соглашение, заимствованное из CP/M. Преобразование выполняется на более низком уровне реализации, а именно, когда содержимое буфера потока записывается в системный дескриптор. putch делает это по-другому, но результат тот же, и использование этой функции делает программу излишне непереносимой. Не поддавайтесь на стратегию Microsoft EEE.

chqrlie 20.11.2022 19:04
Ответ принят как подходящий

putchar() — это стандартная функция, возможно реализованная как макрос, определенная в <stdio.h> для вывода одного байта в стандартный поток вывода (stdout).

putch() — нестандартная функция, доступная в некоторых устаревших системах, изначально реализованная в MS/DOS как способ вывода символов на экран напрямую, минуя стандартную схему буферизации потоков. Эта функция в основном устарела, не используйте ее.

Вывод через stdout на терминал по умолчанию буферизуется строкой в ​​большинстве систем, поэтому, если ваш вывод заканчивается новой строкой, он появится на экране без дальнейшей задержки. Если вам нужно сбросить вывод при отсутствии новой строки, используйте fflush(stdout), чтобы принудительно записать буферизованное содержимое потока на терминал.

Я не понимаю, так лучше ли putchar, потому что он выводит один байт в выходной поток, а не просто выводит символы на экран напрямую? не будет ли в этом случае лучше putch, потому что компьютеру нужно меньше делать, чтобы распечатать символ?

why 20.11.2022 18:58

Стандартный поток вывода, также известный как stdout, по умолчанию направлен на терминал (он же экран). putch — устаревшая, непереносимая альтернатива, о которой не стоит знать. Забудь и не пользуйся.

chqrlie 20.11.2022 19:01

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