Escape sequences in C
எஸ்கேப் வரிசைகள் சி மற்றும் சி + + நிரலாக்க மொழிகளில் பயன்படுத்தப்படுகின்றன, மேலும் அவற்றின் வடிவமைப்பு ஜாவா, பிஎச்பி, சி #போன்ற பல மொழிகளில் நகலெடுக்கப்பட்டது. தப்பிக்கும் வரிசை என்பது ஒரு எழுத்து அல்லது சரத்திற்குள் பயன்படுத்தப்படும்போது தன்னை பிரதிநிதித்துவப்படுத்தாத எழுத்துக்களின் வரிசையாகும், ஆனால் மற்றொரு எழுத்து அல்லது எழுத்துக்களின் வரிசையாக மொழிபெயர்க்கப்பட்டுள்ளது, அவை நேரடியாக பிரதிநிதித்துவப்படுத்த கடினமாகவோ அல்லது சாத்தியமற்றதாகவோ இருக்கலாம். சி இல், அனைத்து தப்பிக்கும் காட்சிகளும் இரண்டு அல்லது அதற்கு மேற்பட்ட எழுத்துக்களைக் கொண்டுள்ளன, அவற்றில் முதலாவது பின்னடைவு, ("தப்பிக்கும் எழுத்து" என்று அழைக்கப்படுகிறது); மீதமுள்ள எழுத்துக்கள் தப்பிக்கும் வரிசையின் விளக்கத்தை தீர்மானிக்கின்றன. எடுத்துக்காட்டாக, ஒரு புதிய வரி எழுத்தைக் குறிக்கும் ஒரு தப்பிக்கும் வரிசை. உந்துதல் ஒரு வரியில் அச்சிட விரும்புகிறோம், அதைத் தொடர்ந்து அடுத்த வரியில் அச்சிட விரும்புகிறோம் என்று வைத்துக்கொள்வோம். அச்சிடப்பட வேண்டிய சரத்தை பின்வருமாறு ஒற்றை எழுத்தாக பிரதிநிதித்துவப்படுத்த முயற்சி செய்யலாம்ஃ #include <stdio.h> int மெய்ன் () {பிரிண்ட்ஃப் ("ஹலோ, வேர்ல்ட்! "); திரும்ப 0;} இது C இல் செல்லுபடியாகாது, ஏனெனில் ஒரு சரம் நேரடி பல தர்க்கரீதியான மூல வரிகளை பரப்பாது. புதிய வரி எழுத்தை அதன் எண் மதிப்பு (ஏஎஸ்சிஐஐ இல்), #include <stdio.h> இன்ட் மெயின் () {பிரிண்ட்எஃப் ("ஹலோ,% சிவேர்ல்ட்! இது நிரலை அச்சிட அறிவுறுத்துகிறது, அதைத் தொடர்ந்து பைட் அதன் எண் மதிப்பு, அதைத் தொடர்ந்து. இயந்திரம் ASCII குறியீட்டைப் பயன்படுத்தும் போது இது உண்மையில் வேலை செய்யும் என்றாலும், புதிய வரி எழுத்துக்கு வேறுபட்ட எண் மதிப்பைக் கொண்ட பிற குறியீடுகளைப் பயன்படுத்தும் அமைப்புகளில் இது வேலை செய்யாது. இது ஒரு நல்ல தீர்வும் அல்ல, ஏனெனில் இது இன்னும் ஒரு புதிய வரி எழுத்தை ஒரு நேரடி எழுத்துக்குள் பிரதிநிதித்துவப்படுத்த அனுமதிக்காது, அதற்கு பதிலாக பிரிண்ட்எஃப் இன் சொற்பொருளைப் பயன்படுத்திக் கொள்கிறது. இந்த சிக்கல்களைத் தீர்ப்பதற்கும், அமைப்புகளுக்கு இடையில் அதிகபட்ச பெயர்வுத்திறனை உறுதி செய்வதற்கும், சி இலக்கு அமைப்பில் எதுவாக இருந்தாலும், ஒரு புதிய வரி எழுத்தாக ஒரு நேரடி எழுத்துக்குள் விளக்குகிறார்ஃ #include <stdio.h> இன்ட் மைன் () {பிரிண்ட்ஃப் ("ஹலோ, \nவேர்ல்ட்! "); ரிட்டர்ன் 0;} இந்த குறியீட்டில், தப்பிக்கும் வரிசை என்பது கடிதத்தைத் தொடர்ந்து வரும் பின்னடைவைக் குறிக்காது, ஏனெனில் பின்னடைவு தொகுப்பாளரால் எழுத்துக்கள் விளக்கப்பட்ட சாதாரண முறையிலிருந்து" தப்பிக்க "காரணமாகிறது. பின்னடைவைப் பார்த்த பிறகு, தொகுப்பாளர் மற்றொரு எழுத்து தப்பிக்கும் வரிசையை முடிக்க வேண்டும் என்று எதிர்பார்க்கிறார், பின்னர் தப்பிக்கும் வரிசையை அது குறிக்கும் பைட்டுகளாக மொழிபெயர்க்கிறார். எனவே, அது உள்ளே அல்லது வேறு எங்கும் பயன்படுத்தப்படுகிறதா என்பதைப் பொருட்படுத்தாமல், உட்பொதிக்கப்பட்ட புதிய வரியுடன் ஒரு சரத்தைக் குறிக்கிறது. இது ஒரு நேரடி எழுத்துக்குள் ஒரு உண்மையான பின்னடைவை எவ்வாறு பிரதிநிதித்துவப்படுத்துவது என்ற பிரச்சினையை எழுப்புகிறது. அடுத்த பகுதியில் காணப்படுவது போல், தப்பிக்கும் வரிசையைப் பயன்படுத்துவதன் மூலம் இது செய்யப்படுகிறது. சில மொழிகளில் தப்பிக்கும் காட்சிகள் இல்லை, எடுத்துக்காட்டாக பாஸ்கல். அதற்கு பதிலாக ஒரு புதிய வரி உட்பட ஒரு கட்டளை பயன்படுத்தப்படும் (ஒரு புதிய வரியை உள்ளடக்கியது, அதை விலக்குகிறது). எழுதுக ('வணக்கம்'); எழுதுக ('உலகம்! '); தப்பிக்கும் வரிசைகளின் அட்டவணை பின்வரும் தப்பிக்கும் வரிசைகள் நிலையான சி இல் வரையறுக்கப்பட்டுள்ளன. இந்த அட்டவணை அவை ASCII இல் வரைபடமாக்கப்பட்ட மதிப்புகளைக் காட்டுகிறது. இருப்பினும், இந்த தப்பிக்கும் காட்சிகளை சி கம்பைலர் கொண்ட எந்த அமைப்பிலும் பயன்படுத்தலாம், மேலும் அமைப்பு ASCII இன் அடிப்படையில் ஒரு எழுத்து குறியீட்டைப் பயன்படுத்தாவிட்டால் வெவ்வேறு மதிப்புகளுக்கு வரைபடமாக்கலாம். குறிப்பு 1.Common தரமற்ற குறியீடு; கீழே உள்ள குறிப்புகள் பிரிவைப் பார்க்கவும். குறிப்பு 2.There ஒன்று, இரண்டு அல்லது மூன்று ஆக்ட்டல் எண்கள் n ஆக இருக்கலாம்; கீழே உள்ள குறிப்புகள் பிரிவைப் பார்க்கவும். குறிப்பு 3. \u 4 ஹெக்ஸாடெசிமல் இலக்கங்களை எடுக்கும்; கீழே உள்ள குறிப்புகள் பிரிவைப் பார்க்கவும். குறிப்பு 4. \U என்பது 8 ஹெக்ஸாடெசிமல் இலக்கங்களை எடுக்கும்; கீழே உள்ள குறிப்புகள் பிரிவைப் பார்க்கவும். டிஓஎஸ்/விண்டோஸ் சிஆர்எல்எஃப் வரிசை போன்ற ஒரு புதிய வரியைக் குறிக்க இயங்குதளம் ஒன்றுக்கு மேற்பட்ட பைட்டுகளைப் பயன்படுத்தலாம் என்ற போதிலும், குறிப்புகள் ஒரு பைட்டை உருவாக்குகின்றன. DOS மற்றும் Windows இல் இருந்து மொழிபெயர்ப்பு என்பது பைட் ஒரு கோப்பில் அல்லது கன்சோலில் எழுதப்படும்போது நிகழ்கிறது, மேலும் உரை கோப்புகளைப் படிக்கும்போது தலைகீழ் மொழிபெயர்ப்பு செய்யப்படுகிறது. ஒரு ஹெக்ஸ் தப்பிக்கும் வரிசை குறைந்தபட்சம் ஒரு ஹெக்ஸ் இலக்க பின்தொடர்தலைக் கொண்டிருக்க வேண்டும், மேல் வரம்பு இல்லாமல்; அது இருக்கும் பல ஹெக்ஸ் இலக்கங்களுக்கு தொடர்கிறது. எனவே, எடுத்துக்காட்டாக, பைட்டை ABCDEF16 என்ற எண் மதிப்புடன் குறிக்கிறது, அதைத் தொடர்ந்து எழுத்து, இது ஒரு ஹெக்ஸ் இலக்கமல்ல. இருப்பினும், இதன் விளைவாக வரும் முழு எண் மதிப்பு ஒரு பைட்டில் பொருந்துவதற்கு மிகப் பெரியதாக இருந்தால், ஒதுக்கப்பட்ட உண்மையான எண் மதிப்பு செயல்படுத்தல் வரையறுக்கப்படுகிறது. பெரும்பாலான தளங்கள் 8-பிட் வகைகளைக் கொண்டுள்ளன, இது ஒரு பயனுள்ள ஹெக்ஸ் தப்பிக்கும் வரிசையை இரண்டு ஹெக்ஸ் இலக்கங்களுக்கு மட்டுப்படுத்துகிறது. இருப்பினும், இரண்டு ஹெக்ஸ் இலக்கங்களை விட நீளமான ஹெக்ஸ் தப்பிக்கும் வரிசைகள் ஒரு பரந்த எழுத்து அல்லது பரந்த சரம் எழுத்துக்குள் பயனுள்ளதாக இருக்கலாம் (L உடன் முன்னொட்டு): சரம் s1 [] = "\x12";// ஒற்றை சரம் மதிப்பு 0x12 (தசமத்தில் 18) சரம் s1 [] = "\x1234";// ஒற்றை சரம் செயல்படுத்தல் வரையறுக்கப்பட்ட மதிப்புடன், சரம் போதுமான நீளமாக இல்லாவிட்டால், wchar _ t s2 [] = L "\x1234";// ஒற்றை சரம் மதிப்பு 0x1234, வழங்கப்பட்ட wchar _ t நீண்டது (16 பிட்கள் போதுமானது) ஒரு ஆக்டல் தப்பிக்கும் வரிசை ஒன்று, இரண்டு அல்லது மூன்று ஆக்டல் இலக்கங்களைத் தொடர்ந்து கொண்டிருக்கும். ஏற்கனவே மூன்று ஆக்டல் இலக்கங்களைக் கொண்டிருக்கும்போது அல்லது அடுத்த எழுத்து ஒரு ஆக்டல் இலக்கமாக இல்லாதபோது ஆக்டல் தப்பிக்கும் வரிசை முடிவடைகிறது. எடுத்துக்காட்டாக, இலக்கத்தைத் தொடர்ந்து வரும் தப்பிக்கும் வரிசையை விட, எண் மதிப்பு 9 (ஆக்டலில் 11) கொண்ட ஒரு பைட்டைக் குறிக்கும் ஒற்றை ஆக்டல் தப்பிக்கும் வரிசை. இருப்பினும், எண்களைத் தொடர்ந்து வரும் ஆக்ட்டல் தப்பிக்கும் வரிசை. பைட்டை எண் மதிப்பு 1 உடன் குறிக்க, அதைத் தொடர்ந்து இலக்கத்துடன், ஒருவர் பயன்படுத்தலாம், ஏனெனில் சி தானாகவே அருகிலுள்ள சரம் எழுத்துக்களை இணைக்கிறது. சில மூன்று இலக்க ஆக்ட்டல் தப்பிக்கும் வரிசைகள் ஒரு பைட்டில் பொருந்துவதற்கு மிகப் பெரியதாக இருக்கலாம் என்பதை நினைவில் கொள்க; இது உண்மையில் தயாரிக்கப்பட்ட பைட்டிற்கான செயல்படுத்தல்-வரையறுக்கப்பட்ட மதிப்பை விளைவிக்கிறது. தப்பிக்கும் வரிசை என்பது பொதுவாகப் பயன்படுத்தப்படும் ஒக்டல் தப்பிக்கும் வரிசையாகும், இது பூஜ்ய எழுத்தைக் குறிக்கிறது, மதிப்பு பூஜ்ஜியத்துடன். தரமற்ற தப்பிக்கும் வரிசைகள் போன்ற ஒரு வரிசை சி தரநிலையின்படி செல்லுபடியாகும் தப்பிக்கும் வரிசை அல்ல, ஏனெனில் இது மேலே உள்ள அட்டவணையில் காணப்படவில்லை. சி தரநிலைக்கு அத்தகைய "செல்லாத" தப்பிக்கும் வரிசைகள் கண்டறியப்பட வேண்டும் (அதாவது, தொகுப்பாளர் ஒரு பிழை செய்தியை அச்சிட வேண்டும்). இந்த உண்மை இருந்தபோதிலும், சில தொகுப்பாளர்கள் கூடுதல் தப்பிக்கும் வரிசைகளை வரையறுக்கலாம், செயல்படுத்தல்-வரையறுக்கப்பட்ட சொற்பொருள்களுடன். ஒரு எடுத்துக்காட்டு தப்பிக்கும் வரிசை, இது ASCII இல் ஹெக்ஸாடெசிமல் மதிப்பாக 1B ஐக் கொண்டுள்ளது, இது தப்பிக்கும் தன்மையைக் குறிக்கிறது, மேலும் இது GCC, கிளங் மற்றும் TCC இல் ஆதரிக்கப்படுகிறது. இருப்பினும் இது சி நிலையான திறனாய்வில் சேர்க்கப்படவில்லை, ஏனெனில் இது சில எழுத்துத் தொகுப்புகளில் (ஈ. பி. சி. டி. ஐ. சி போன்றவை) அர்த்தமுள்ள சமமானதாக இல்லை. உலகளாவிய எழுத்துப் பெயர்கள் C99 தரநிலையிலிருந்து, சரம் எழுத்துக்களில் யூனிகோட் குறியீடு புள்ளிகளைக் குறிக்கும் தப்பிக்கும் வரிசைகளையும் C ஆதரித்துள்ளது. இத்தகைய தப்பிக்கும் வரிசைகள் உலகளாவிய எழுத்துப் பெயர்கள் என்று அழைக்கப்படுகின்றன, மேலும் அவை ஹெக்ஸ் இலக்கத்தைக் குறிக்கும் வடிவம் அல்லது வடிவத்தைக் கொண்டுள்ளன. கருதப்படும் மற்ற தப்பிக்கும் காட்சிகளைப் போலல்லாமல், ஒரு உலகளாவிய எழுத்து பெயர் ஒன்றுக்கு மேற்பட்ட குறியீடு அலகுகளாக விரிவடையக்கூடும். இந்த வரிசை குறியீடு புள்ளியைக் குறிக்கிறது, இது ஒரு ஹெக்ஸாடெசிமல் எண்ணாக விளக்கப்படுகிறது. இந்த வரிசை குறியீடு புள்ளியைக் குறிக்கிறது, இது ஒரு ஹெக்ஸாடெசிமல் எண்ணாக விளக்கப்படுகிறது. (எனவே, U + 10000 அல்லது அதற்கு மேல் அமைந்துள்ள குறியீடு புள்ளிகள் தொடரியல் மூலம் குறிக்கப்பட வேண்டும், அதேசமயம் குறைந்த குறியீடு புள்ளிகள் அல்லது பயன்படுத்தலாம்.) குறியீடு புள்ளி இலக்கு அமைப்பில் இலக்கு வகையின் குறியீட்டில் குறியீடு அலகுகளின் வரிசையாக மாற்றப்படுகிறது. எடுத்துக்காட்டாக (குறியாக்கம் UTF-8, மற்றும் UTF-16 ஆக இருந்தால்): சரம் s1 [] = "\xC0";// 0xC0 மதிப்புடன் ஒரு ஒற்றை பைட், செல்லுபடியாகாத UTF-8 சரம் s2 [] = "\u00C0";// 0xC3,0x80 மதிப்புகளுடன் இரண்டு பைட்டுகள், U + 00C0 wchar _ t s3 [] = L "\xC0" இன் UTF-8 குறியாக்கம்;// 0x00C0 wchar _ t s4 = L "\u00C0" மதிப்புடன் ஒரு ஒற்றை wchar _ t முக்கியமாக, உலகளாவிய எழுத்து பெயர் எப்போதும் எழுத்தை குறிக்கிறது, அது எந்த வகையான சரம் சொல்லர்த்தமாக பயன்படுத்தப்படுகிறது அல்லது பயன்பாட்டில் உள்ள குறியீட்டைப் பொருட்படுத்தாமல். எக்டல் மற்றும் ஹெக்ஸ் தப்பிக்கும் வரிசைகள் எப்போதும் குறியீட்டைப் பொருட்படுத்தாமல் எண் மதிப்புகளின் சில வரிசைகளைக் குறிக்கின்றன. எனவே, உலகளாவிய எழுத்துப் பெயர்கள் ஆக்டல் மற்றும் ஹெக்ஸ் தப்பிக்கும் வரிசைகளுக்கு நிரப்பு; ஆக்டல் மற்றும் ஹெக்ஸ் தப்பிக்கும் வரிசைகள் குறியீடு அலகுகளைக் குறிக்கின்றன, உலகளாவிய எழுத்துப் பெயர்கள் குறியீடு புள்ளிகளைக் குறிக்கின்றன, அவை "தர்க்கரீதியான" எழுத்துகளாகக் கருதப்படலாம். எஸ்கேப் வரிசை டிகிராஃப் குறிப்புகள் மேலும் படிக்க ஐஎஸ்ஓ/ஐஇசி 9899:1999, நிரலாக்க மொழிகள்-சிசி (நிரலாக்க மொழி) கட்டுப்பாட்டு எழுத்துக்கள்