locale.h trong C
locale.h trong C
Header file có tên locale.h trong Thư viện C định nghĩa các thiết lập riêng về vị trí, chẳng hạn như định dạng date và các biểu tượng về currency. Bạn sẽ thấy một số macro được định nghĩa cùng với một cấu trúc quan trọng struct lconv và hai hàm quan trọng được liệt kê dưới đây.
Các macro được định nghĩa trong locale.h
Bảng dưới liệt kê một số Macro được định nghĩa trong locale.h và các macro này sẽ được sử dụng trong hai hàm được trình bày ở dưới đây:
Macro | Mô tả |
---|---|
LC_ALL | Thiết lập mọi thứ |
LC_COLLATE | Tác động đến các hàm strcoll và strxfrm |
LC_CTYPE | Tác động đến tất cả các hàm về ký tự |
LC_MONETARY | Tác động đến thông tin về tiền tệ được cung cấp bởi hàm localeconv |
LC_NUMERIC | Tác động đến định dạng dấu thập phân và thông tin được cung cấp bởi hàm localeconv |
LC_TIME | Tác động đến hàm strftime |
Các hàm được định nghĩa trong locale.h
Sau đây là một số hàm được định nghĩa trong locale.h của Thư viện C:
Hàm | Mô tả |
---|---|
Hàm char *setlocale(int category, const char *locale) | Thiết lập hoặc đọc vị trí phụ thuộc vào thông tin đã cho |
Hàm struct lconv *localeconv(void) | Thiết lập hoặc đọc vị trí phụ thuộc vào thông tin đã cho |
Hàm setlocale() trong C
Hàm char *setlocale(int category, const char *locale) trong Thư viện C thiết lập và đọc vị trí tùy vào thông tin đã cho.
Khai báo hàm setlocale() trong C
Dưới đây là phần khai báo cho hàm setlocale() trong C:
char *setlocale(int category, const char *locale)
Tham số
category − Đây là một hằng (đã được đặt tên) xác định loại hàm bị tác động bởi thiết lập locale này.
LC_ALL cho tất cả các hàm.
LC_COLLATE cho các hàm so sánh chuỗi, ví dụ như strcoll().
LC_CTYPE cho các hàm phân loại và chuyển đổi ký tự, ví dụ như strtoupper().
LC_MONETARY cho định dạng tiền tệ như localeconv().
LC_NUMERIC cho phân tách thập phân cho localeconv().
LC_TIME cho các hàm định dạng date và time như strftime().
LC_MESSAGES cho các phản hồi hệ thống.
locale − Nếu locale là NULL hoặc chuỗi trống "", thì các tên locale sẽ được thiết lập từ các giá trị của các biến môi trường với cùng tên như các loại trên.
Trả về giá trị
Nếu thành công thì setlocale() trả về một chuỗi tương ứng với thiết lập locale. Hàm này trả về NULL nếu yêu cầu không được thực hiện.
Ví dụ
Chương trình C sau minh họa cách sử dụng của hàm setlocale() trong C:
#include <locale.h> #include <stdio.h> #include <time.h> int main () { time_t currtime; struct tm *timer; char buffer[80]; time( &currtime ); timer = localtime( &currtime ); printf("Locale la: %s\n", setlocale(LC_ALL, "en_GB")); strftime(buffer,80,"%c", timer ); printf("Date la: %s\n", buffer); printf("Locale la: %s\n", setlocale(LC_ALL, "de_DE")); strftime(buffer,80,"%c", timer ); printf("Date la: %s\n", buffer); return(0); }
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
Locale la: en_GB Date la: Fri 05 ju 2016 10:35:02 UTC Locale la: de_DE Date la: Fr 05 Dez 2016 10:35:02 UTC
Hàm localeconv() trong C
Hàm struct lconv *localeconv(void) trong Thư viện C thiết lập và đọc vị trí tùy vào thông tin đã cho. Chúng được trả về trong một đối tượng của kiểu cấu trúc lconv.
Khai báo hàm localeconv() trong C
Dưới đây là phần khai báo cho hàm localeconv() trong C:
struct lconv *localeconv(void)
Tham số
Hàm này không nhận bất kỳ tham số nào.
Trả về giá trị
Hàm này trả về một con trỏ tới một cấu trúc struct lconv cho Locale hiện tại, mà có cấu trúc sau:
typedef struct { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; } lconv
Ví dụ
Chương trình C sau minh họa cách sử dụng của hàm localeconv() trong C:
#include <locale.h> #include <stdio.h> int main () { struct lconv * lc; setlocale(LC_MONETARY, "it_IT"); lc = localeconv(); printf("Ky hieu cua Local Currency: %s\n",lc->currency_symbol); printf("Ky hieu cua International Currency: %s\n",lc->int_curr_symbol); setlocale(LC_MONETARY, "en_US"); lc = localeconv(); printf("Ky hieu cua Local Currency: %s\n",lc->currency_symbol); printf("Ky hieu cua International Currency: %s\n",lc->int_curr_symbol); setlocale(LC_MONETARY, "en_GB"); lc = localeconv(); printf ("Ky hieu cua Local Currency: %s\n",lc->currency_symbol); printf ("Ky hieu cua International Currency: %s\n",lc->int_curr_symbol); printf("Ky tu Decimal Point: %s\n", lc->decimal_point); return 0; }
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
Ky hieu cua Local Currency: EUR Ky hieu cua International Currency: EUR Ky hieu cua Local Currency: $ Ky hieu cua International Currency: USD Ky hieu cua Local Currency: £ Ky hieu cua International Currency: GBP Ky tu Decimal Point = .
Cấu trúc lconv
typedef struct { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; } lconv
Sau đây là miêu tả chi tiết các trường trên:
Trường | Mô tả |
---|---|
decimal_point | Ký tự dấu chấm thập phân được sử dụng cho các giá trị không phải tiền tệ |
thousands_sep | Ký tự phân tách vị trí hàng nghìn được sử dụng cho các giá trị không phải tiền tệ |
grouping | Một chuỗi chỉ kích cỡ của mỗi nhóm chữ số trong các định lượng không phải tiền tệ. Mỗi ký tự biểu diễn một giá trị nguyên, mà chỉ định số chữ số trong nhóm hiện tại. Một giá trị 0 nghĩa là giá trị trước đó được sử dụng cho phần còn lại của nhóm |
int_curr_symbol | Đây là một chuỗi các biểu tượng tiền tệ quốc tế. Ba ký tự đầu tiên của nó được xác định bởi ISO 4217:1987 và ký tự thứ tư là phân tách biểu tượng tiền tệ với phần định lượng tiền tệ |
currency_symbol | Biểu tượng local được sử dụng cho tiền tệ |
mon_decimal_point | Ký tự dấu thập phân được sử dụng cho các giá trị tiền tệ |
mon_thousands_sep | Ký tự nhóm hàng nghìn được sử dụng cho các giá trị tiền tệ |
mon_grouping | Một chuỗi có các phần tử định nghĩa kích cỡ của nhóm chữ số trong giá trị tiền tệ. Mỗi ký tự biểu diễn một giá trị nguyên mà chỉ định số chữ số trong nhóm hiện tại. Một giá trị 0 nghĩa là giá trị trước đó được sử dụng cho phần còn lại của nhóm |
positive_sign | Ký tự được sử dụng cho các giá trị tiền tệ dương |
negative_sign | Ký tự được sử dụng cho các giá trị tiền tệ âm |
int_frac_digits | Số chữ số sau dấu thập phân trong các giá trị tiền tệ quốc tế |
frac_digits | Số chữ số sau dấu thập phân trong các giá trị tiền tệ |
p_cs_precedes | Nếu bằng 1, thì currency_symbol xuất hiện trước một giá trị tiền tệ dương. Nếu bằng 0, thì currency_symbol xuất hiện sau một giá trị tiền tệ |
p_sep_by_space | Nếu bằng 1, thì phân tách currency_symbol với một giá trị tiền tệ dương bởi một khoảng trống. Nếu bằng 0, thì sẽ không phân tách currency_symbol và một giá trị tiền tệ dương |
n_cs_precedes | Nếu bằng 1, thì currency_symbol ở trước một giá trị tiền tệ âm. Nếu bằng 0, thì currency_symbol theo sau một giá trị tiền tệ âm |
n_sep_by_space | Nếu bằng 1, thì phân tách currency_symbol với một giá trị tiền tệ âm bởi một khoảng trống. Nếu bằng 0, thì không phân tách |
p_sign_posn | Biểu diễn vị trí của positive_sign trong một giá trị tiền tệ dương |
n_sign_posn | Biểu diễn vị trí của negative_sign trong một giá trị tiền tệ âm |
Các giá trị sau được sử dụng cho p_sign_posn và n_sign_posn trong Thư viện C:
Giá trị | Mô tả |
---|---|
0 | Các dấu ngoặc đơn bao giá trị và currency_symbol |
1 | Ký hiệu đặt trước giá trị và currency_symbol |
2 | Ký hiệu theo sau giá trị và currency_symbol |
3 | Ký hiệu đặt ngay trước giá trị và currency_symbol |
4 | Ký hiệu đặt ngay sau giá trị và currency_symbol |
Theo Tutorialspoint
Bài trước: limits.h trong C
Bài tiếp: math.h trong C
Bạn nên đọc
Cũ vẫn chất
-
70 câu ca dao, tục ngữ về học tập hay nhất
Hôm qua -
Bạn đã sử dụng keo tản nhiệt đúng cách?
Hôm qua -
30 lời chúc sinh nhật chồng yêu ý nghĩa và ngọt ngào
Hôm qua 1 -
Code LaLa Land Lục Địa Bí Ẩn mới nhất và cách nhập code
Hôm qua 2 -
Hướng dẫn toàn tập Word 2016 (Phần 26): Tạo đồ họa SmartArt
Hôm qua -
Hướng dẫn chuyển sang ngôn ngữ tiếng Việt cho Gmail
Hôm qua -
Đấu Trường Chân Lý Mobile (TFT Mobile)
-
Những câu nói hay về mùa thu, lời chào mùa thu hay và ý nghĩa
Hôm qua -
Cách sao chép định dạng trong Google Docs, Sheets và Slides
Hôm qua -
‘Ghét’ Apple, Mark Zuckerberg vẫn phải dùng Macbook nhưng nó lạ lắm
Hôm qua 1