Aşağıda ki kaçma sıralıları (escape sequences) özel karakterlerin kaynak koduna girmelerini sağlar.
Kaçma Sırası | Adı | Manası |
\a | Uyarı | Ses veya görülebilir uyarı üretir |
\b | Geri Boşluk | İmleci 1 pozisyon geri hareket ettirir |
\f | Besleme | İmleci bir sonra ki sayfanın ilk pozisyona hareket ettirir. |
\n | Yeni Satır | İmleci bir sonraki satırın ilk pozisyonuna getirir. |
\r | Taşıyıcı Döndürme | İmleci mevcut satırın ilk pozisyonuna getirir. |
\t | Yatay tab | İmleci bir sonra ki yatay tab pozisyonuna getirir. |
\v | Dikey Tab | İmleci bir sonra ki dikey tab pozisyonuna getirir. |
\' | Tekil tırnak oluşturur. | |
\" | Çift tırnak oluşturur. | |
\? | Soru işareti oluşturur. | |
\\ | backslash oluştur. | |
\0 | Boş karakter oluşturur. | |
\ ddd | Oktal dijitler tarafından tek bir karakter tanımlar (8 tabanlı).Çoklu karakterler “kaçma sıralılarında (escape sequence) tanımlanabilir, fakat değeri kuruluma özeldir.(Örneğe bakınız) | |
\x dd | Bir karakteri hexadecimal(16 tabanlı ) dijit cinsinden tanımlar. |
Örnekler:
printf("\12");
Decimal 1o üretir. (x0A Hex).
printf("\xFF");
Decimal karakter -1 veya 255’i üretir (işarete bağlı olarak).
printf("\x123");
Tek karakter üretir. (Değeri belirsizdir.) . Hataya sebep olabilir.
printf("\0222");
Değeri kurulum özeli olan iki karakter üretir.
Escape sequences
The following escape sequences allow special characters to be put into the source code.
Escape Sequence | Name | Meaning |
\a | Alert | Produces an audible or visible alert. |
\b | Backspace | Moves the cursor back one position (non-destructive). |
\f | Form Feed | Moves the cursor to the first position of the next page. |
\n | New Line | Moves the cursor to the first position of the next line. |
\r | Carriage Return | Moves the cursor to the first position of the current line. |
\t | Horizontal Tab | Moves the cursor to the next horizontal tabular position. |
\v | Vertical Tab | Moves the cursor to the next vertical tabular position. |
\' | Produces a single quote. | |
\" | Produces a double quote. | |
\? | Produces a question mark. | |
\\ | Produces a single backslash. | |
\0 | Produces a null character. | |
\ ddd | Defines one character by the octal digits (base-8 number). Multiple characters may be defined in the same escape sequence, but the value is implementation-specific (see examples). | |
\x dd | Defines one character by the hexadecimal digit (base-16 number). |
Examples:
printf("\12");
Produces the decimal character 10 (x0A Hex).
printf("\xFF");
Produces the decimal character -1 or 255 (depending on sign).
printf("\x123");
Produces a single character (value is undefined). May cause errors.
printf("\0222");
Produces two characters whose values are implementation-specific.
Önceden Tanımlanmış Ters Bölü Karakter Değişmezleri
Tanım ASCII No
‘\0’ sonlandırıcı karakter (null character) 0
‘\a’ çan sesi (alert) 7
‘\b’ geri boşluk (back space) 8
‘\t’ tab karakteri (tab) 9
‘\n’ aşağı satır (new line) 10
‘\v’ düşey tab (vertical tab) 11
‘\f’ sayfa ileri (form feed) 12
‘\r’ satır başı (carriage return) 13
‘\”‘ çift tırnak (double quote) 34
‘\” tek tırnak (single quote) 39
‘\?’ soru işareti (question mark) 63
‘\\’ ters bölü (back slash) 92
Kullanılışlarına bir örnek :
char ch;
ch = ‘\a’;
Onaltılık Sayı Sisteminde Yazılan Karakter Değişmezleri
Tek tırnak içinde ters bölü ve ‘x’ karakterlerinden sonra onaltılık (hexadecimal) sayı sisteminde bir sayı yazılırsa bu sistemin kullandığı karakter setinde, o sayısal değerin gösterdiği kod numaralı karakter değişmezidir.
‘\x41’ /* 41H kod numaralı karakterdir. */
‘\xff’ /* FFH kod numaralı karakterdir. */
‘\x1C’ /* 1C kod numaralı karakterdir. */
Aşağıda harf isimli char türden değişkene 41H değeri atanıyor:
char harf;
harf = ‘\x41’;
Bu da onluk sayı sisteminde 65 değeridir. ASCII karakter setinin kullanıldığını varsayalım. 65 kod nolu ASCII karakteri ‘A’ karakteridir. Dolayısıyla harf isimli değişkene ‘A’ atanmış olur.
Sekizlik Sayı Sisteminde Yazılan Karakter Değişmezleri
Tek tırnak içinde ters bölü karakterinden sonra sekizlik sayı sisteminde bir değer yazılırsa, bu kullanılan karakter setindeki o sayısal değerin gösterdiği kod numaralı karaktere işaret eden bir karakter değişmezidir. Tek tırnak içindeki ters bölü karakterini izleyen sekizlik sistemde yazılmış sayı üç basamaktan uzun olmamalıdır. Sekizlik sistemde yazılan sayının başında sıfır rakamı olma zorunluluğu yoktur.
‘\012’ /* 10 numaralı ASCII karakteri, Tam sayı değeri 10 */
‘\16’ /* 14 numaralı ASCII karakteri. Tam sayı değeri 14 */
‘\123’ /* 83 numaralı ASCII karakteri. Tam sayı değeri 83 */
Program içinde kullanımına bir örnek:
char a, b;
a = ‘\xbc’ ; /* onaltılık sayı sisteminde yazılmış karakter değişmezi */
b = ‘\012’; /* sekizlik sayı sisteminde yazılmış karakter değişmezi */
Örneğin, 7 numaralı ASCII karakteri olan çan sesi karakteri, değişmez olarak üç ayrı
biçimde de yazılabilir:
‘\x7’ /* hex gösterimli karakter değişmezi */
‘\07’ /* oktal gösterimli karakter değişmezi */
‘\a’ /* önceden belirlenmiş ters bölü karakter değişmezi */
Burada tercih edilecek biçim son biçim olmalıdır. Hem taşınabilir bir biçimdir hem de okunabilirliği daha iyidir. Başka karakter setlerinde çan sesi karakteri 7 sıra numaralı karakter olmayabilir, ama önceden belirlenmiş ters bölü karakter değişmezi şeklinde ifade edersek hangi sistem olursa olsun çan sesi karakterini verir. Ayrıca kodu okuyan çan sesi karakterinin 7 numaralı ASCII karakteri olduğunu bilmeyebilir, ama ‘\a’ nın çan sesi karakteri olduğunu bilir.
Karakter değişmezleri konusunu kapatmadan önce karakter setleri konusunda da biraz bilgi verelim:
Günümüzde en çok kullanılan karakter seti ASCII karakter setidir. ASCII (American Standard Code for Information Interchange) sözcüklerinin baş harflerinden oluşan bir kısaltmadır. ASCII karakter kodunda karakterler 7 bitlik bir alanda kodlanmıştır. Bazı bilgisayarlar ise 8 bit alana genişletilmiş kodlama kullanırlar ki bu sette 128 yerine 256 karakter temsil edilebilir.
Farklı bilgisayarlar farklı karakter kodlaması kullanabilir. Örnek olarak IBM mainframe leri daha eski olan EBCDIC kodlamasını kullanır. Unicode ismi verilen daha geliştirilmiş bir karakter kodlaması vardır ki karakterler 2-4 byte’lık alanda temsil edildikleri için bu kodlamada dünyada var olan tüm karakterlerin yer alması hedeflenmiştir. Gelecekte birçok makinenin bu karakter kodlamasını destekleyecek biçimde tasarlanacağı düşünülüyor.
Karakter Değişmezleri Nerede Kullanılır
Karakter değişmezleri tamsayı değişmezleridir. Ancak C’de daha çok bir yazı bilgisi ile ilgili kullanırlar. Yazılar karakter değişmezleri ile değerlerini alabilecekleri gibi, bir yazının değiştirilmesi amacıyla karakter değişmezleri kullanılabilir.
Karakter Değişmezleri int Türdendir
C’de karakter değişmezleri int türden olarak ele alınır ve işleme sokulur. Bu konu “tür dönüşümleri” bölümünde ele alınacak.