Standart C Programlama Dili


8.1. C Dünyanın Her Yerinde—Yöreler

Bilginin gösterim yolları ülkeden ülkeye değişir. Örneğin, tarih yazılırken, Türkçe’de önce gün, sonra ay yazılır. Bazı batı ülkelerinde ise bunun tersi yapılır. İngilizce’de ondalık sayıları ayırmak için nokta kullanılırken, başka ülkelerde virgül kullanılır. Ve, en önemlisi de, her ülkenin kendine özgü harfleri vardır ve bütün dillerin bütün karakterlerini ifade edebilecek tek bir karakter takımı yoktur.

Bu konuya bir çözüm getirmek için yöreler kavramı getirilmiştir. Bir yöre, belirli bir ülke veya dil için yukarıdaki paragrafta sözü edilen türden bilgileri içeren bir bilgi paketidir. Yöreler, ctype fonksiyonlarını, yazı yazma yönünü, saat-tarih biçimlerini, karakterlerin sırasını ve ondalıkları ayırmak için kullanılan karakteri belirlerler. Yeni bir yöre belirterek, printf gibi, birçok standart fonksiyonu etkilemek olasıdır.

Kullanılmakta olan yöre ile ilgili bilgileri lconv yapısı tutar ve buna bir gösterge elde etmek için localeconv adlı fonksiyonu çağırmak gerekir. Yürütme esnasında yöreyi belirtmek için, şu iki argümanı olan setlocale adlı fonksiyonu çağırırsınız: Değiştirmek istediğiniz özelliklerden oluşan grup (LC_COLLATE [karakter sırası], LC_CTYPE [karakter tipi], LC_MONETARY [para], LC_NUMERIC [sayılar], LC_TIME [zaman], LC_ALL [hepsi]) ve yeni özelliklerin alınacağı yörenin adı. Eğer bütün diller için yöreler tanımlanmışsa, programın başında kullanıcının milliyetini sorup ondan sonra bu kişinin alıştığı şekilde çalışan bir program yazılabilir. Örneğin,

setlocale(LC_ALL, turkish)

Standart sadece “C” yöresinin gerçekleştirilmesini gerektirmektedir. Bu da, kitap boyunca anlatılan özelliklerden oluşmaktadır.