Returns a pointer to a string that contains information obtained from the program's current locale. Format #include <langinfo.h> char *nl_langinfo (nl_item item);
1 – Argument
item The name of a constant that specifies the information required. These constants are defined in <langinfo.h>. The following constants are valid: Constant Category Description D_T_FMT LC_TIME String for formatting date and time D_FMT LC_TIME String for formatting date T_FMT LC_TIME String for formatting time T_FMT_AMPM LC_TIME Time format with AM/PM string AM_STR LC_TIME String that represents AM in 12-hour clock notation PM_STR LC_TIME String that represents PM in 12-hour clock notation DAY_1 LC_TIME The name of the first day of the week . . . DAY_7 LC_TIME The name of the seventh day of the week ABDAY_1 LC_TIME The abbreviated name of the first day of the week . . . ABDAY_7 LC_TIME The abbreviated name of the seventh day of the week MON_1 LC_TIME The name of the first month in the year . . . MON_12 LC_TIME The name of the twelfth month in the year ABMON_1 LC_TIME The abbreviated name of the first month in the year . . . ABMON_12 LC_TIME The abbreviated name of the twelfth month in the year ERA LC_TIME Era description strings ERA_D_FMT LC_TIME Era date format string ERA_T_FMT LC_TIME Era time format ERA_D_T_FMT LC_TIME Era date and time format ALT_DIGITS LC_TIME Alternative symbols for digits RADIXCHAR LC_NUMERIC The radix character THOUSEP LC_NUMERIC The character used to separate groups of digits in nonmonetary values YESEXP LC_MESSAGES The expression for affirmative responses to yes/no questions NOEXP LC_MESSAGES The expression for negative responses to yes/no questions CRNCYSTR LC_MONETARY The currency symbol. It is preceded by one of the following: o A minus (-) if the symbol is to appear before the value o A plus (+) if the symbol is to appear after the value o A period (.) if the symbol replaces the radix character CODESET LC_CTYPE Codeset name
2 – Description
If the current locale does not have language information defined, the function returns information from the C locale. The program should not modify the string returned by the function. This string might be overwritten by subsequent calls to nl_langinfo. If the setlocale function is called after a call to nl_langinfo, then the pointer returned by the previous call to nl_langinfo will be unspecified. In this case, the nl_langinfo function should be called again.
3 – Return Value
x Pointer to the string containing the requested information. If item is invalid, the function returns an empty string.
4 – Example
#include <stdio.h> #include <locale.h> #include <langinfo.h> /* This test sets up the British English locale, and then */ /* inquires on the data and time format, first day of the week, */ /* and abbreviated first day of the week. */ #include <stdlib.h> #include <string.h> int main() { char *return_val; char *nl_ptr; /* set the locale, with user supplied locale name */ return_val = setlocale(LC_ALL, "en_gb.iso8859-1"); if (return_val == NULL) { printf("ERROR : The locale is unknown"); exit(1); } printf("+----------------------------------------+\n"); /* Get the date and time format from the locale. */ printf("D_T_FMT = "); /* Compare the returned string from nl_langinfo with */ /* an empty string. */ if (!strcmp((nl_ptr = (char *) nl_langinfo(D_T_FMT)), "")) { /* The string returned was empty this could mean that either */ /* 1) The locale does not contain a value for this item */ /* 2) The value for this item is an empty string */ printf("nl_langinfo returned an empty string\n"); } else { /* Display the date and time format */ printf("%s\n", nl_ptr); } /* Get the full name for the first day of the week from locale */ printf("DAY_1 = "); /* Compare the returned string from nl_langinfo with */ /* an empty string. */ if (!strcmp((nl_ptr = (char *) nl_langinfo(DAY_1)), "")) { /* The string returned was empty this could mean that either */ /* 1) The locale does not contain a value for the first */ /* day of the week */ /* 2) The value for the first day of the week is */ /* an empty string */ printf("nl_langinfo returned an empty string\n"); } else { /* Display the full name of the first day of the week */ printf("%s\n", nl_ptr); } /* Get the abbreviated name for the first day of the week from locale*/ printf("ABDAY_1 = "); /* Compare the returned string from nl_ langinfo with an empty */ /* string. */ if (!strcmp((nl_ptr = (char *) nl_langinfo(ABDAY_1)), "")) { /* The string returned was empty this could mean that either */ /* 1) The locale does not contain a value for the first */ /* day of the week */ /* 2) The value for the first day of the week is an */ /* empty string */ printf("nl_langinfo returned an empty string\n"); } else { /* Display the abbreviated name of the first day of the week */ printf("%s\n", nl_ptr); } } Running the example program produces the following result: +----------------------------------------+ D_T_FMT = %a %e %b %H:%M:%S %Y DAY_1 = Sunday ABDAY_1 = Sun