Updated: October 26, 2022

Select a program's locale

Warning: Don't use setlocale() in QNX Neutrino programs; this function only provides POSIX compliance.


#include <locale.h>

char * setlocale( int category, 
                  const char * locale );


The part of the environment that you want to set; one of:
  • LC_ALL — select the entire locale environment.
  • LC_COLLATE — select only the collating sequence.
  • LC_CTYPE — select only the character-handling information.
  • LC_MESSAGES — specify the language to be used for messages.
  • LC_MONETARY — select only monetary formatting information.
  • LC_NUMERIC — select only the numeric-format environment.
  • LC_TIME — select only the time-related environment.
The locale that you want to use. The following built-in locales are offered:
  • C (default)



Use the -l c option to qcc to link against this library. This library is usually included automatically.


The setlocale() function selects a program's locale, according to the specified category and the specified locale.

A locale affects several things:

See the localeconv() function for more information about the locale.

At the start of a program, the default C locale is initialized as if the following call to setlocale() appeared at the start of main():

(void)setlocale( LC_ALL, "C" );


The string associated with the specified category for the new locale, or NULL if an error occurs. This function doesn't change the program's locale when error occurs.

  • For a NULL pointer of locale, this function returns a pointer to the string associated with the category for the program's current locale. This function doesn't change the program's locale.
  • QNX Neutrino provides this function for POSIX compatibility, but it isn't adequate for internationalization. QNX Neutrino ships the International Components for Unicode (ICU) libraries (libicu*) that you can use instead. For more information about ICU, see


ANSI, POSIX 1003.1

Cancellation point No
Interrupt handler No
Signal handler No
Thread No