Как проверить текст регистр c
Перейти к содержимому

Как проверить текст регистр c

Язык Си в примерах/Верхний регистр

В следующей программе введенный пользователем текст на латинице переводится в верхний регистр, то есть строчные буквы становятся заглавными. Все прочие коды — включая заглавные буквы и символы, не являющиеся латинскими буквами — не меняются.

Обратите внимание на то, что с символами (переменными типа char ) можно оперировать как с числами. В частности, 'Z' — 'A' есть число, равное разности кодов символов A и Z , то есть (при использовании кодовой таблицы ASCII) 25 — число букв в латинском алфавите минус 1. Символы можно также сравнивать друг с другом, при этом сравниваются их коды.

Главный циклусловие корректности ввода) этой программы почти полностью совпадают с рассмотренными в разделе ASCII коды символов. Однако, вместо использования printf для вывода значений считанных кодов, здесь мы используем функцию putchar для вывода самих кодов (знаков), возможно — после преобразования. [1] В коде по-прежнему используются функции getchar и ferror . [2] [3]

Обратите внимание, что сформировать условие «конец потока» при вводе с клавиатуры можно вводом (в зависимости от системы и предполагая настройки по-умолчанию) Control-d или Control-z (также обозначаются C-d , ^D , C-z , ^Z .)

Использование стандартной библиотеки [ править ]

Приведенный выше код можно еще более упростить, если воспользоваться стандартной функцией преобразования регистра toupper , объявленной в заголовке ctype.h . [4]

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

Кроме латиницы [ править ]

Стандарт предусматривает также ряд средств для поддержки письменностей, отличных от «базовой» (26-символьной) латиницы. В основе такой поддержки — два следующих понятия:

  1. локаль — набор сведений о письменности, языке и культуре, включающий, помимо прочего, таблицы соответствия символов верхнего и нижнего регистров;
  2. широкие символьные типы ( wchar_t , wint_t ; англ. wide character ) — для представления ряда письменностей (например — основанных на иероглифах), а равно для представления текстов на нескольких языках, «байтового» типа char оказывается недостаточно; как следствие, в задачах, связанных с обработкой многоязычных текстов, его заменяет тип wchar_t ; аналогично, в операциях ввода-вывода используется тип wint_t (и константа WEOF .)

Соответственно, в исходный вариант вносятся следующие изменения.

  1. Появляется вызов setlocale ( LC_ALL , "" ) , инициализирующий локаль в соответствии с текущими настройками. (По-умолчанию, при запуске программы полагается setlocale ( LC_ALL , "C" ) — установка «стандартной» локали.) [5]
  2. Функции getwchar , towupper , putwchar заменяют соответствующие для «узких» символов ( getchar , toupper , putchar .) Соответственно меняются тип ( int → wint_t ) и константа признака исчерпания входного потока ( EOF → WEOF .) [6][7][8]
  3. Включаются соответствующие заголовки ( locale.h , wchar.h , wctype.h .)

Отметим, впрочем, что принятые в конкретном языке правила обращения со строчными и заглавными могут оказаться сложнее простой зависимости символ—символ, предполагаемой в данном примере. Так, например, правила немецкого языка ставят в соответствие строчной «ß» пару заглавных — «SS» (например: Straße → STRASSE ), что ни коим образом не может быть реализовано функцией towupper .

Как проверить все ли символы в строке пренадлежат верхнему или нижнему регистру в си?

Как проверить все ли символы в строке пренадлежат верхнему или нижнему регистру в си?

Кодовая страница ASCII разработана таким образом, что буквы одного регистра сгруппированы в некоторые блоки. Так букам латинского алфавита в верхнем регистре соответствуют коды от 65 (буква А) до 90 (буква Z). А буквам латинского алфавита в нижнем регистре соответствуют коды от 97 (буква а) до 122 (буква z). Поэтому, всё, что нужно это проверять отсутствие принадлежности кода символа (типа char) диапазону от 97 до 122. Если хоть одно значение входит в этот диапазон, то с уверенностью можно сказать, что хотябы один символ представлен в нижнем регистре. Соответствующую функцию написать не сложно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c или задайте свой вопрос.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345

Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Char. Is Upper Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Показывает, относится ли символ Юникода к категории букв верхнего регистра.

Перегрузки

Показывает, относится ли указанный символ в указанной позиции в указанной строке к категории букв верхнего регистра.

Показывает, относится ли указанный символ Юникода к категории букв верхнего регистра.

IsUpper(String, Int32)

Показывает, относится ли указанный символ в указанной позиции в указанной строке к категории букв верхнего регистра.

Параметры

Позиция символа, который необходимо вычислить в s .

Возвращаемое значение

Значение true , если сивел в позиции index в s является буквой верхнего регистра; в противном случае — значение false .

Исключения

s имеет значение null .

Параметр index имеет значение меньше нуля или больше последней позиции в s .

Комментарии

Позиции символов в строке индексируются начиная с нуля.

Допустимые прописные буквы являются членами следующей категории: UnicodeCategory UppercaseLetter .

См. также раздел

Применяется к

IsUpper(Char)

Показывает, относится ли указанный символ Юникода к категории букв верхнего регистра.

Параметры

Знак Юникода, который необходимо вычислить.

Возвращаемое значение

Значение true , если c является буквой верхнего регистра; в противном случае — значение false .

Комментарии

Допустимые прописные буквы являются членами следующей категории: UnicodeCategory UppercaseLetter .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *