Задавайте вопросы

Задавайте вопросы и получайте ответы от нашего сообщества

Отвечайте

Отвечайте на вопросы и станьте экспертом по своей теме

Свяжитесь с администрацией

Наши специалисты готовы ответить на ваши вопросы

C Функция setlocale

Информация о теме

О теме Здравствуйте, вы читаете тему Функция setlocale созданную в в разделе Уроки для начинающих пользователем impuLse #IT. Эта тема была просмотрена 4 196 раз(а), получила 3 комментариев и 1 очки реакции...
Название категории Уроки для начинающих
Название темы Функция setlocale
Автор темы impuLse #IT
Дата начала
Ответы
Просмотры
Количество реакций
Последнее сообщение Mccall

impuLse #IT

Администратор
Команда форума
Регистрация
12.03.2015
Сообщения
899
Реакции
446
Баллы
35
Лучшие ответы
0
  • Автор темы
  • Администратор
  • #1
Прототип функции setlocale:
C:
Пожалуйста, Вход или Регистрация для просмотра содержания кодов!
Описание
Функция setlocale задает локаль, которая будет использоваться текущей программой. Можно изменить все параметры локали, или конкретные её части. Эта функция также может быть использована для получения имени текущей локали, передав NULL в через параметр locale.

Локаль содержит информацию о том, как интерпретировать и выполнять определенные операции ввода/вывода и преобразования с учетом географического расположения и специфики языков в определённых условиях.

Большинство используемых сред программирования имеют определенную информацию о локали, установленной в соответствии с предпочтениями пользователя или автоматической локализации. Но, независимо от этой системной локали, в момент запуска, все Си-программы имеют установленную Cи-локаль, которая является нейтральной локалью с минимальной информацией, что позволяет предсказать результат программы. Для того чтобы использовать, по умолчанию, локаль установленную в среде программирования, необходимо вызвать функцию setlocale с параметром locale равным "".

По умолчанию, установлена локаль: SetLocale (LC_ALL, "C").
Вся локаль, по умолчанию, может быть установлена вызовом функции SetLocale (LC_ALL, "");
Если необходимо изменить часть текущей локали, вместо параметра LC_ALL определяем параметр определённой категории. Какие именно категории есть, вы можете увидеть в таблице, ниже.

Чтобы изменить все параметры локали, необходимо вызвать функцию setlocale с параметром category LC_ALL, на пример, так: setlocale(LC_ALL,"");

Конкретные параметры текущей локали зависят от вызова функции setlocale, предварительно указав параметр category.
Параметры:
  • category
    Параметры локали, можно задавать отдельно каждый параметр или все сразу. В заголовочном файле <clocale> определены константы, содержащие значения для этого параметра:
    КонстантаОписание
    LC_ALLВся локаль.
    LC_COLLATEВлияет на поведение функций strcoll и strxfrm.
    LC_CTYPEВлияет на поведение всех функций заголовочного файла <cctype>, кроме isdigit и isxdigit и на функции обработки многобайтовых и широких символов
    LC_MONETARYВлияет на денежный формат, денежная информация возвращается функцией localeconv.
    LC_NUMERICВлияет на символ десятичной точки в операции форматируемого ввода/вывода и на функции форматирования строк, а также на неденежную информацию возвращаемую функцией localeconv.
    LC_TIMEВлияет на поведение функции strftime.
  • locale
    Строка, содержащая имя локали. Как минимум существуют два значения, передаваемые через этот параметр:
    Имя локалиОписание
    «C»Минимальная Си-локаль.
    » «Локаль, по умолчанию, используемая средой разработки.
Если значение этого параметра равно NULL, функция не вносит никаких изменений в текущую локаль, но имя текущей локали возвращается функцией.
Возвращаемое значение
В случае успеха, функция возвращает указатель на строку с установленной локалью для данной категории.

Если установлена категория LC_ALL и для различных частей локали установлены различные значения, возвращаемая строка предоставляет эту информацию в формате, который может варьироваться от реализации компилятора.

Если функции не удалось установить новую локаль, текущая локаль остается неизменной и возвращается нулевой указатель.
Пример: исходный код программы
C:
Пожалуйста, Вход или Регистрация для просмотра содержания кодов!
 
Последнее редактирование модератором:

Ойбек

Пользователь
Регистрация
16.05.2016
Сообщения
15
Реакции
0
Баллы
0
Лучшие ответы
0
Привет, я новичок, а Можно всё это сделать на Microsoft Visual Studio C++ 2016?
 

impuLse #IT

Администратор
Команда форума
Регистрация
12.03.2015
Сообщения
899
Реакции
446
Баллы
35
Лучшие ответы
0
  • Автор темы
  • Администратор
  • #3

Mccall

Пользователь
Регистрация
15.07.2017
Сообщения
7
Реакции
0
Баллы
0
Лучшие ответы
0
В некоторых компьютерах setlocale не принимает, но его можно исправить: Надо открыть консольный режим (чёрный экран нажатием F9 (у меня Code::Blocks)) на верхнем окне нажать правую кнопку мышки зайти в свойства, перейти в раздел "Шрифт", и выбрать "Lucida Console" и нажать ОК. Даже если при этом не будет отображать кириллицу, то вместо setlocale придётся написать system("chcp 1251");
 
Верх Низ