Язык Си в примерах/Верхний регистр: различия между версиями

Содержимое удалено Содержимое добавлено
Оформление, уточнения; примеры переписаны для посимвольного преобразования.
../ASCII коды символов/ (была: ../Максимум/), упрощено; →‎Задания: новый раздел.
Строка 37:
</source>
 
''Главный цикл'' (и ''условие корректности'' ввода) этой программы напоминаетпочти таковойполностью длясовпадают с рассмотреннойрассмотренными в разделе [[../МаксимумASCII коды символов/]]. Однако, вместо использования <code >scanfprintf</code> для чтениявывода чисел<em >значений</em> и,считанных соответственнокодов, здесь мы используем функцию <code >printfputchar</code> для вывода результатов<em обработки>самих</em> кодов здесь(знаков), мывозможно используем функциипосле преобразования.<coderef name="putchar" >getchar</code> для чтенияВ отдельныхкоде ''знаков''по-прежнему (кодов)используются ифункции <code >putchargetchar</code> дляи вывода каждого<code «обработанного» знака>ferror</code>.<ref name="getchar" /><ref name="putcharferror" />
 
<strong >Обратите внимание,</strong> что сформировать условие «конец потока» при вводе с клавиатуры можно вводом (в зависимости от системы и предполагая настройки по-умолчанию) <kbd >Control-d</kbd> или <kbd >Control-z</kbd> (также обозначаются <kbd >C-d</kbd>, <kbd >^D</kbd>, <kbd >C-z</kbd>, <kbd >^Z</kbd>.)
Кроме того, меняется ''условие корректности'' ввода: если в предыдущей программе мы требовали возврата <code >EOF</code> как признака ''исчерпания'' входного потока, то <code >getchar</code> определена стандартом как возвращающая <code >EOF</code> также и как ''признак ошибки ввода.''<ref name="getchar" /> Поэтому, завершив чтение, мы явно требуем ''ложности'' значения функции ''признака ошибки'' <code >ferror</code> для стандартного ввода (<code >stdin</code>.)<ref name="ferror" />
 
== Использование стандартной библиотеки ==
Строка 45:
[[#upper.c |Приведенный выше]] код можно еще более упростить, если воспользоваться стандартной функцией преобразования регистра <code >toupper</code>, ''объявленной'' в заголовке <code >ctype.h</code>.<ref name="case-mapping" />
 
Некоторые ''реализации'' языка, кроме того, определяют функции <code >strlwr</code> и <code >strupr</code>, которые переводят в нижний и верхний регистр ''строки'', а не отдельные символы. Эти функции, однако, не являются ''[[w:C11 |стандартными'']] и их наличие (или отсутствие) зависит от выбранной реализации языка.
 
{{Якорь |toupper.c}}
Строка 65:
}
</source>
 
== Задания ==
 
# Проверьте работу программы вводом строк <code >Hello!</code> и <code >Привет!</code>. Удостоверьтесь, что лишь для первой из них выполняется заданное преобразование.
# Разработайте варианты программы, выполняющие (вновь для латиницы) a. преобразование <em >верхнего</em> регистра в нижний и b. «переключение» регистра — <code >Hello!</code> → <code >hELLO!</code>. (Указание: воспользуйтесь [[w:C11 |стандартными]] функциями <code >islower</code> и <code >isupper</code>.<ref name="islower" /><ref name="isupper" />)
 
==См. также==
Строка 74 ⟶ 79 :
{{Примечания | refs =
<!-- Пожалуйста поддерживайте алфавитный порядок для name. Спасибо. -->
<ref name="case-mapping" >{{Cite web | title = 7.4.2  Character case mapping functions | url = http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf#page=221 | work = WG14 N1570 Committee Draft | publisher = ISO/IEC | datepublished = 2011-04-12 | lang = en | accessdate = 2012-11-19}}</ref>
<ref name="ferror" >{{Cite web | title = 7.21.10.3  The ferror function | url = http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf#page=357 | work = WG14 N1570 Committee Draft | publisher = ISO/IEC | datepublished = 2011-04-12 | lang = en | accessdate = 2012-11-19}}</ref>
<ref name="islower" >{{Cite web | title = 7.4.1.7 The islower function | url = http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf#page=220 | work = WG14 N1570 Committee Draft | publisher = ISO/IEC | datepublished = 2011-04-12 | lang = en | accessdate = 2012-11-19}}</ref>
<ref name="isupper" >{{Cite web | title = 7.4.1.11 The isupper function | url = http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf#page=221 | work = WG14 N1570 Committee Draft | publisher = ISO/IEC | datepublished = 2011-04-12 | lang = en | accessdate = 2012-11-19}}</ref>
<ref name="getchar" >{{Cite web | title = 7.21.7.6 The getchar function | url = http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf#page=350 | work = WG14 N1570 Committee Draft | publisher = ISO/IEC | datepublished = 2011-04-12 | lang = en | accessdate = 2012-11-19}}</ref>
<ref name="putchar" >{{Cite web | title = 7.21.7.8  The putchar function | url = http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf#page=351 | work = WG14 N1570 Committee Draft | publisher = ISO/IEC | datepublished = 2011-04-12 | lang = en | accessdate = 2012-11-19}}</ref>
}}