Header locale berguna untuk mengatur informasi lokasi tertentu
Variabel :
struct lconv
Makro :
NULL
LC_ALL
LC_COLLATE
LC_CTYPE
LC_MONETARY
LC_NUMERIC
LC_TIME
Fungsi :
localeconv();
setlocale();
Variabel dan Definisinya
struktur lconv berisi variabel-variabel berikut :
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;
Makro LC_ di deskripsikan di keterangan tentang setlocale dibawah. NULL adalah nilai dari suatu konstanta pointer null
setlocale
Deklarasi
char *setlocale(int
category, const char *
locale);
Mengatur atau membaca lokasi dari info informasi yang terkait.
category dapat merupakan salah satu dari berikut ini :
LC_ALL |
Menset segalanya |
LC_COLLATE |
Mempengaruhi fungsi strcoll dan strxfrm. |
LC_CTYPE |
Mempengaruhi semua fungsi karakter. |
LC_MONETARY |
Mempengaruhi informasi moneter yang disediakan oleh fungsi localeconv |
LC_NUMERIC |
Mempengaruhi formati decimal-point dan informasi-informasi yang disediakan oleh fungsi localeconv |
LC_TIME |
Mempengaruhi fungsi the strftime |
Semua nilai dari “C” yang diberikan pada locale merubah settingan lokal ke settingan lingkungan translasi yang normal (default). Suatu nilai null (“”) mengatur settingan lingkungan asli (native). Suatu pointer null (NULL) menyebabkan setlocale menghasilkan suatu pointer ke string yang diasosiasikan dengan kategori diatas untuk settingan yang ada (tidak ada perubahan). Semua nilai yang lain bersifat implementation-specific.
Setelah pengaturan yang berhasil, setlocale
menghasilkan suatu pointer ke suatu string yang mewakili setting lokasi sebelumnya. Jika gagal, maka nilai yang dihasilkan adalah NULL.
Contoh :
[sourcecode language=”cpp”]
#include<locale.h>
#include<stdio.h>
int main(void)
{
char *old_locale;
old_locale=setlocale(LC_ALL,"C");
printf("The preivous setting was %s.\n",old_locale);
return 0;
}
[/sourcecode]
localeconv
Deklarasi
struct lconv *localeconv(void);
Mengatur struktur lconv
untuk mewakili setting lokasi yang ada. Pointer string di struktur bisa saja menunjuk ke suatu string null (“”) yang mengindikasikan bahwa nilai tersebut tidak tersedia. Tipe-tipe char adalah angka non negatif. Jika nilainya adalah CHAR_MAX
, maka nilainya tidak tersedia.
Variabel-variable lconv :
char *decimal_point |
Karakter point desimal yang digunakan untuk nilai non-monetary. |
char *thousands_sep |
Karakter Separator Thousands place yang digunakan untuk nilai non-monetary. |
char *grouping |
Suatu string yang mengindikasikan ukuran dari masing-masing grup digit untuk jumlah non-monetary. Masing-masing karakter mewakili sebuah nilai integer yang menunjuk jumlah digit yang ada di grup yang ada. Suatu nilai 0 berari nilai sebelumnya digunakan untuk grup lainnya. |
char *int_curr_symbol |
String dari simbol keuangan internasional yang digunakan. Tiga karakter yang pertama adalah yang dispesifikasikan oleh ISO 4217:1987 dan yang keempat adalah karakter yang memisahkan simbol keuangan dengan jumlah monetary. |
char *currency_symbol |
Simbol lokal yang digunakan untuk keuangan. |
char *mon_decimal_point |
Karakter point desimal yang digunakan untuk nilai monetary. |
char *mon_thousands_sep |
Karakter pengelompokan ribuan yang digunakan untuk nilai monetary |
char *mon_grouping |
Suatu string dimana elemennya mendefinisikan ukuran dari grup digit pada nilai monetary. Masing-masing karakter mewakili nilai integer yang menunjuk jumlah digit grup bersangkutan. Nilai 0 berarti bahwa nilai sebelumnya digunakan untuk grup lainnya. |
char *positive_sign |
Karakter yang digunakan untuk nilai moneter positif. |
char *negative_sign |
Karakter yang digunakan untuk nilai moneter negatif. |
char int_frac_digits |
Jumlah digit yang ditunjukkan setelah koma desimal pada nilai moneter internasional. |
char frac_digits |
Jumlah digit yang ditunjukkan setelah angka koma pada nilai moneter. |
char p_cs_precedes |
Jika sama dengan 1 maka currency_symbol muncul sebelum nilai moneter positif. Jika sama dengan 0 maka currency_symbol muncul setelah nilai moneter positif. |
char p_sep_by_space |
Jika sama dengan 1, maka currency_symbol dipisahkan dengan spasi dari nilai moneter positif. Jika sama dengan 0, maka tidak ada spasi antara currency_symbol dengan nilai moneter positif. |
char n_cs_precedes |
Jika sama dengan 1, maka currency_symbol mendahului nilai moneter negatif. Jika sama dengan 0, maka currency_symbol mengikuti nilai moneter negatif |
char n_sep_by_space |
Jika sama dengan 1, maka currency_symbol dipisahkan dengan spasi dari suatu nilai moneter negatif. Jika sama dengan 0, maka tidak ada spasi antara currency_symbol dengan nilai moneter negatif |
char p_sign_posn |
Mewakili posisi positive_sign di nilai moneter positif. |
char n_sign_posn |
Mewakili posisi negative_sign di nilai moneter negatif. |
Nilai berikut ini digunakan untuk p_sign_posn
dan n_sign_posn
:
0 |
Mengurung jadi satu nilai dan simbol keuangan |
1 |
Tanda mendahului nilai dan simbol keuangan. |
2 |
Tanda mengikuti nilai dan simbol keuangan. |
3 |
Tanda langsung mendahului nilai dan simbol keuangan |
4 |
Tanda langsung mengikuti nilai dan simbol keuangan. |
Contoh :
[sourcecode language=”cpp”]
#include<locale.h>
#include<stdio.h>
int main(void)
{
struct lconv locale_structure;
struct lconv *locale_ptr=&locale_structure;
locale_ptr=lcoaleconv();
printf("Decimal point: %s",locale_ptr->decimal_point);
printf("Thousands Separator: %s",locale_ptr->thousands_sep);
printf("Grouping: %s",locale_ptr->grouping);
printf("International Currency Symbol: %s",locale_ptr->int_curr_symbol);
printf("Currency Symbol: %s",locale_ptr->currency_symbol);
printf("Monetary Decimal Point: %s",locale_ptr->mon_decimal_point);
printf("Monetary Thousands Separator: %s",locale_ptr->mon_thousands_sep);
printf("Monetary Grouping: %s",locale_ptr->mon_grouping);
printf("Monetary Positive Sign: %s",locale_ptr->positive_sign);
printf("Monetary Negative Sign: %s",locale_ptr->negative_sign);
printf("Monetary Intl Decimal Digits: %c",locale_ptr->int_frac_digits);
printf("Monetary Decimal Digits: %c",locale_ptr->frac_digits);
printf("Monetary + Precedes: %c",locale_ptr->p_cs_precedes);
printf("Monetary + Space: %c",locale_ptr->p_sep_by_space);
printf("Monetary – Precedes: %c",locale_ptr->n_cs_precedes);
printf("Monetary – Space: %c",locale_ptr->n_sep_by_space);
printf("Monetary + Sign Posn: %c",locale_ptr->p_sign_posn);
printf("Monetary – Sign Posn: %c",locale_ptr->n_sign_posn);
}
[/sourcecode]
Bersambung (rezaervani@gmail.com)
Tutorial Sebelumnya
- Serial Tutorial C (1) : Compiling Program C dan C++
- Serial Tutorial C (2) : Opsi -Wall saat Kompilasi
- Serial Tutorial C (3) : Menggabungkan beberapa file saat kompilasi
- Serial Tutorial C (4) : Kompilasi File secara independen
- Serial Tutorial C (5) : Membuat File Objek dari File Sumber
- Serial Tutorial C (6) : Membuat Eksekutable File dari File Objek
- Serial Tutorial C (7) : Mengenal Struktur Program C
- Serial Tutorial C (8) : printf format identifiers
- Serial Tutorial C (9) : Latihan 1 – Membuat Program Pemangkatan
- Serial Tutorial C (10) : Membaca Input Keyboard dengan scanf()
- Serial Tutorial C (11) : makefile sederhana
- Serial Tutorial C (12) : Membuat Link dengan External Libraries
- Serial Tutorial C (13) : Urutan Link Library
- Serial Tutorial C (14) : Menggunakan Library File Header
- Serial Tutorial C (15) : Library Standar C – Perbedaan Implementasi antara Sistem Unix-like dan Windows
- Serial Tutorial C (16) : Library C Standar dan Daftar Fungsi (Alfabetis)
- Serial Tutorial C (17) : Library C Standar – assert.h
- Serial Tutorial C (18) : Library C Standar – ctype.h
- Serial Tutorial C (19) : Library C Standar – errno.h
- Serial Tutorial C (20) : Library C Standar – float.h
- Serial Tutorial C (21) : Library C Standar – limits.h
Leave a Reply