مستسلسلات الهروب
يتم استخدام الـEscape sequence لتمثيل بعض الحروف الخاصة بداخل الـ string literals والـ character literals.
السلاسل التالية يجب توفيرها من قبل الكومبيلر. يجوز للكومبيلر ان يعرف سلاسل أخرى مالم تتعارض مع هذه:
| Escape sequence |
الوصف | التمثيل |
|---|---|---|
\'
|
single quote علامة تنصيص وحيدة |
البايت 0x27 بتكويد الـASCII
|
\"
|
double quote علامة تنصيص مزدوجة |
البايت 0x22 بتكويد الـASCII
|
\?
|
question mark علامة استفهام |
البايت 0x3f بتكويد الـASCII
|
\\
|
backslash شرطة مائلة |
البايت 0x5c بتكويد الـASCII
|
\a
|
audible bell صوت جرس |
البايت 0x07 بتكويد الـASCII
|
\b
|
backspace مسافة في الاتجاه الغكسي |
البايت 0x08 بتكويد الـASCII
|
\f
|
form feed - new page صفحة جديدة |
البايت 0x0c بتكويد الـASCII
|
\n
|
line feed - new line سطر جديد |
البايت 0x0a بتكويد الـASCII
|
\r
|
carriage return الرجوع إلى بداية السطر |
البايت 0x0d بتكويد الـASCII
|
\t
|
horizontal tab جدولة أفقية |
البايت 0x09 بتكويد الـASCII
|
\v
|
vertical tab جدولة رأسية |
البايت 0x0b بتكويد الـASCII
|
\nnn
|
arbitrary octal value قيمة ما بالنظام الثماني |
البايت nnn
|
\xnn
|
arbitrary hexadecimal value قيمة مابالنظام الستةعشري |
البايت nn
|
\unnnn
|
arbitrary Unicode value ترميز اليونيكود لمحرف. ربما تؤول لأكثر من بايت |
code point U+nnnn
|
\Unnnnnnnn
|
arbitrary Unicode value ترميز اليونيكود لمحرف. ربما تؤول لأكثر من بايت |
code point U+nnnnnnnn
|
ملحوظات
تعتبر \0 أكثر متسلسلات الهروب الثمانية نفعا نظرا لانها تستخدم كعلامة لنهاية السلاسل النصية ('\0'-terminated strings).
علامة نهاية السطر \n لها معنى خاص حيث يجب على الكومبيلر تحويلها إلى صيغة نهاية السطر الخاصة بالنظام عندما يكون الإدخال والإخراج في الوضع النصي (text mode). فمثلا على الويندوز يتم استخدام \r\n للدلالة على سطر جديد. استخدام \n يؤدي إلى استبدالها من قبل الدوال إلى \r\n أثناء المعالجة.
أما في الوضع الثنائي (binary mode) لا تتم أي تحويلات. على معظم الأنظمة الأخرى لا يوجد فرق بين الوضع النصي والثنائي.
الحد الأقصى لمتسلسلات الهروب الثمانية هو 3 أرقام ثمانية (أي من 0 إلى 7). في حالة استخدام حرف أو رقم آخر يتم اعتبار هذا الحرف جزءا منفصلا عن السلسلة.
متسلسلات الهروب الستةعشرية ليس لها طول أقصى ولكنها تنتهي عند أول رقم غير ستةعشري. في حالة أن القيمة لا يمكن تمثيلها كحرف واحد داخل سلسلة الحروف (char أو char16_t أو char32_t أو أو wchar_t) يكون السلوك غير محدد.
مثال
#include <stdio.h>
int main(void)
{
printf("This\nis\na\ntest\n\nShe said, \"How are you?\"\n");
return 0;
}
الخرج:
This
is
a
test
She said, "How are you?"