setlocale
- C kursu
- İleri seviye
- Ders 63/83
- 5 dk
setlocale ile yerel ayar öğrenirsin.
setlocale
setlocale programın yerel ayarını (locale) değiştirir; <locale.h> başlığında tanımlıdır. Yerel; karakter sınıflandırma, sayı biçimi ve tarih biçimini etkiler.
setlocale(LC_ALL, "C") en küçük yereli seçer; yalnızca ASCII temel kümesini tanır. Boş dize "" ortam değişkenlerinden (LANG, LC_ALL) okur. İşlem başarılı olursa yerel adını döndürür; başarısızsa NULL. Bu derste deterministik çıktı için "C" kullanıyoruz.
Yerel adını almak
setlocale başarılı olduğunda yerel adını bir dize olarak döndürür. setlocale(LC_ALL, "C") her ortamda "C" dizesini verir; bu yüzden çıktı deterministiktir.
Ortam yereli (boş dize) ise LANG değişkenine bağlıdır; test makineleri arasında farklı olabilir. Yerel ayarı mbstowcs ve isalpha gibi işlevlerin davranışını da etkiler; bu yüzden çok baytlı dönüşüm öncesi setlocale çağrısı gerekir.
Uygulama Yereli kur ve yazdır
char *loc = setlocale(LC_ALL, "C"); ile yereli kur. printf("yerel: %s\n", loc); ile dönen adı yazdır. <locale.h> başlığını ekle.
Başlangıç kodu
#include <stdio.h>
#include <locale.h>
// Yereli 'C' olarak kur ve dönen adı yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <locale.h>
int main(void) {
char *loc = setlocale(LC_ALL, "C");
printf("yerel: %s\n", loc);
return 0;
}Beklenen çıktı
yerel: C
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 setlocale çağrısı
char *loc = setlocale(____, "C");
char *loc = setlocale(LC_ALL, "C");
Açıklama: LC_ALL tüm kategorileri bir kerede ayarlar.
2 Yerel kategorilerini eşle
| Kavram | Anlamı |
|---|---|
LC_ALL |
Tüm kategoriler |
LC_CTYPE |
Karakter sınıfı |
LC_TIME |
Tarih biçimi |
LC_NUMERIC |
Sayı biçimi |
3 setlocale(LC_ALL, "C") ne döndürür?
- NULL
- 0
- "C" dizesi Doğru cevap
- "tr_TR"
Açıklama: Başarıda "C" yerel adını döndürür.