Null-terminated string
கணினி நிரலாக்கத்தில், பூஜ்யம்-முடிவடைந்த சரம் என்பது எழுத்துக்களைக் கொண்ட ஒரு வரிசையாக சேமிக்கப்படும் ஒரு எழுத்து சரம் மற்றும் பூஜ்ய எழுத்துடன் முடிவடைகிறது (பூஜ்ஜியத்தின் உள் மதிப்பு கொண்ட ஒரு எழுத்து, இந்த கட்டுரையில் "என். யு. எல்" என்று அழைக்கப்படுகிறது, கிளைஃப் பூஜ்ஜியத்தைப் போன்றது அல்ல). மாற்று பெயர்கள் சி சரம், இது சி நிரலாக்க மொழியைக் குறிக்கிறது மற்றும் ஏஎஸ்சிஐஐஇசட் (சி ஏஎஸ்சிஐஐ தவிர வேறு குறியீடுகளைப் பயன்படுத்தலாம் என்றாலும்). (முதல்) என். யு. எல்-ஐத் தேடுவதன் மூலம் ஒரு சரத்தின் நீளம் கண்டறியப்படுகிறது. சரத்தின் நீளத்தைப் பொறுத்தவரை O (n) (நேரியல் நேரம்) எடுக்கும் என்பதால் இது மெதுவாக இருக்கலாம். இதன் பொருள் என்னவென்றால், ஒரு சரம் ஒரு என். யு. எல்-ஐக் கொண்டிருக்க முடியாது (நினைவகத்தில் ஒரு என். யு. எல் உள்ளது, ஆனால் அது கடைசி எழுத்துக்குப் பிறகு உள்ளது, சரம் அல்ல). PDP-11 அசெம்பிளி மொழிகளின். ASCIZ உத்தரவு மற்றும் PDP-10 க்கான MACRO-10 மேக்ரோ அசெம்பிளி மொழியின் ASCIZ உத்தரவு ஆகியவற்றால் வரலாறு பூஜ்யம்-நிறுத்தப்பட்ட சரங்கள் உருவாக்கப்பட்டன. இவை சி நிரலாக்க மொழியின் வளர்ச்சிக்கு முந்தையவை, ஆனால் பிற வகையான சரங்கள் பெரும்பாலும் பயன்படுத்தப்பட்டன. சி (மற்றும் அது பெறப்பட்ட மொழிகள்) உருவாக்கப்பட்ட நேரத்தில், நினைவகம் மிகவும் குறைவாக இருந்தது, எனவே ஒரு சரத்தின் நீளத்தை சேமிக்க ஒரு பைட் மேல்நிலையை மட்டுமே பயன்படுத்துவது கவர்ச்சிகரமானதாக இருந்தது. அந்த நேரத்தில் ஒரே பிரபலமான மாற்று, பொதுவாக "பாஸ்கல் சரம்" என்று அழைக்கப்படுகிறது (மிகவும் நவீன சொல் "நீளம்-முன்னொட்டு"), சரத்தின் நீளத்தை சேமிக்க ஒரு முன்னணி பைட்டைப் பயன்படுத்தியது. இது சரம் என். யு. எல் ஐக் கொண்டிருக்க அனுமதிக்கிறது மற்றும் நீளத்தைக் கண்டுபிடிப்பதற்கு ஒரு நினைவக அணுகல் (ஓ (1) (நிலையான) நேரம்) மட்டுமே தேவைப்படுகிறது, ஆனால் சரம் நீளம் 255 எழுத்துக்களுக்கு மட்டுப்படுத்தப்பட்டுள்ளது. சி வடிவமைப்பாளர் டென்னிஸ் ரிச்சி ஒரு சரத்தின் நீளத்தின் வரம்பைத் தவிர்ப்பதற்காக பூஜ்ய-முடிவின் மரபைப் பின்பற்றத் தேர்ந்தெடுத்தார், மேலும் எண்ணிக்கையை பராமரிப்பது அவரது அனுபவத்தில், ஒரு டெர்மினேட்டரைப் பயன்படுத்துவதை விட வசதியானது அல்ல என்று தோன்றியது. இது CPU அறிவுறுத்தல் தொகுப்பு வடிவமைப்பில் சில தாக்கத்தை ஏற்படுத்தியது. 1970 கள் மற்றும் 1980 களில் சில CPU களில், Zilog Z80 மற்றும் DEC VAX போன்றவை, நீளம்-முன்னொட்டு சரங்களைக் கையாள்வதற்கான பிரத்யேக வழிமுறைகளைக் கொண்டிருந்தன. இருப்பினும், பூஜ்ய-நிறுத்தப்பட்ட சரம் இழுவைப் பெற்றவுடன், CPU வடிவமைப்பாளர்கள் அதை கணக்கில் எடுத்துக் கொள்ளத் தொடங்கினர், எடுத்துக்காட்டாக 1992 இல் ES/9000 520 இல் "லாஜிக்கல் ஸ்ட்ரிங் அசிஸ்ட்" அறிவுறுத்தல்களைச் சேர்க்க IBM இன் முடிவிலும், 2015 இல் IBM z13 இல் திசையன் சரம் அறிவுறுத்தல்களிலும் காணப்பட்டது. ஃப்ரீபிஎஸ்டி டெவலப்பர் பால்-ஹென்னிங் காம்ப், ஏசிஎம் வரிசையில் எழுதுகையில், 2-பைட் (ஒரு-பைட் அல்ல) நீளத்தின் மீது பூஜ்யம்-நிறுத்தப்பட்ட சரங்களின் வெற்றியை "மிக விலையுயர்ந்த ஒரு-பைட் தவறு" என்று குறிப்பிட்டார். வரம்புகள் செயல்படுத்த எளிதானது என்றாலும், இந்த பிரதிநிதித்துவம் பிழைகள் மற்றும் செயல்திறன் சிக்கல்களுக்கு ஆளாகியுள்ளது. பூஜ்ய-முடிவு என்பது வரலாற்று ரீதியாக பாதுகாப்பு சிக்கல்களை உருவாக்கியுள்ளது. ஒரு சரத்தின் நடுவில் செருகப்பட்ட ஒரு என். யு. எல் அதை எதிர்பாராத விதமாக துண்டிக்கும். ஒரு பொதுவான பிழை என். யு. எல்-க்கு கூடுதல் இடத்தை ஒதுக்கக்கூடாது, எனவே அது அருகிலுள்ள நினைவகத்தில் எழுதப்பட்டது. மற்றொன்று என். யு. எல் எழுதக்கூடாது, இது பெரும்பாலும் சோதனையின் போது கண்டறியப்படவில்லை, ஏனெனில் நினைவகத் தொகுதியில் ஏற்கனவே பூஜ்ஜியங்கள் இருந்தன. நீளத்தைக் கண்டுபிடிப்பதற்கான செலவு காரணமாக, பல நிரல்கள் ஒரு சரத்தை ஒரு நிலையான அளவிலான இடையகத்திற்கு நகலெடுப்பதற்கு முன்பு கவலைப்படவில்லை, இதனால் அது மிக நீளமாக இருந்தால் இடையக நிரம்பி வழிகிறது. பூஜ்ஜியத்தை சேமிக்க இயலாமைக்கு உரை மற்றும் பைனரி தரவு தனித்துவமாக வைக்கப்பட்டு வெவ்வேறு செயல்பாடுகளால் கையாளப்பட வேண்டும் (பிந்தையது தரவின் நீளத்தையும் வழங்க வேண்டும்). இது தவறான செயல்பாட்டைப் பயன்படுத்தும்போது குறியீடு பணிநீக்கம் மற்றும் பிழைகளுக்கு வழிவகுக்கும். நீளத்தைக் கண்டுபிடிப்பதில் உள்ள வேக சிக்கல்களை பொதுவாக ஸ்ட்ரால்சிபி போன்ற ஓ (என்) என்ற மற்றொரு செயல்பாட்டுடன் இணைப்பதன் மூலம் குறைக்கலாம். இருப்பினும், இது எப்போதும் ஒரு உள்ளுணர்வு ஏபிஐக்கு வழிவகுக்காது. எழுத்துக் குறியீடுகள் பூஜ்யம்-முடிவடைந்த சரங்களுக்கு குறியாக்கம் பூஜ்ஜிய பைட்டை (0x00) எங்கும் பயன்படுத்துவதில்லை; எனவே சாத்தியமான ஒவ்வொரு ASCII அல்லது UTF-8 சரத்தையும் சேமிக்க முடியாது. இருப்பினும், ஏ. எஸ். சி. ஐ. ஐ அல்லது யு. டி. எஃப்-8 இன் துணைக்குழுவை-என். யு. எல் தவிர ஒவ்வொரு எழுத்தையும்-பூஜ்ய-முடிவடைந்த சரங்களில் சேமிப்பது பொதுவானது. சில அமைப்புகள் "மாற்றியமைக்கப்பட்ட யுடிஎஃப்-8" ஐப் பயன்படுத்துகின்றன, இது என். யு. எல் ஐ பூஜ்ஜியமற்ற இரண்டு பைட்டுகளாக (0xC0,0x80) குறியாக்கம் செய்கிறது, இதனால் சாத்தியமான அனைத்து சரங்களையும் சேமிக்க அனுமதிக்கிறது. இது யுடிஎஃப்-8 தரநிலையால் அனுமதிக்கப்படவில்லை, ஏனெனில் இது ஒரு நீண்ட குறியாக்கமாகும், மேலும் இது ஒரு பாதுகாப்பு அபாயமாக கருதப்படுகிறது. யுடிஎஃப்-8 இல் பயன்படுத்தப்படாத 0xFE அல்லது 0xFF போன்ற வேறு சில பைட்டுகள் சரத்தின் முடிவாகப் பயன்படுத்தப்படலாம். யுடிஎஃப்-16 2-பைட் முழு எண்களைப் பயன்படுத்துகிறது, மேலும் பைட் பூஜ்ஜியமாக இருக்கலாம் (உண்மையில் ஒவ்வொரு பைட்டும், ஏஎஸ்சிஐஐ உரையைக் குறிக்கும் போது), பூஜ்ய-முடிவடைந்த பைட் சரத்தில் சேமிக்க முடியாது. இருப்பினும், சில மொழிகள் 16-பிட் யுடிஎஃப்-16 எழுத்துக்களின் சரத்தை செயல்படுத்துகின்றன, இது 16-பிட் என்யூஎல் (0x0000) மூலம் முடிவடைகிறது. மேம்பாடுகள் சி சரம் கையாளுதலை குறைவான பிழைகள் ஏற்படக்கூடியதாக மாற்ற பல முயற்சிகள் மேற்கொள்ளப்பட்டுள்ளன. ஒரு உத்தி என்னவென்றால், ஸ்ட்ரடுப் மற்றும் ஸ்ட்ரால்சிபி போன்ற பாதுகாப்பான செயல்பாடுகளைச் சேர்ப்பது, அதே நேரத்தில் கெட்ஸ் போன்ற பாதுகாப்பற்ற செயல்பாடுகளின் பயன்பாட்டைக் குறைப்பது. மற்றொன்று, சி சரங்களைச் சுற்றி ஒரு பொருள் சார்ந்த ரேப்பரைச் சேர்ப்பது, இதனால் பாதுகாப்பான அழைப்புகளை மட்டுமே செய்ய முடியும். இருப்பினும், பாதுகாப்பற்ற செயல்பாடுகளை எப்படியும் அழைக்க முடியும். பெரும்பாலான நவீன நூலகங்கள் சி சரங்களை 32-பிட் அல்லது பெரிய நீள மதிப்பைக் கொண்ட ஒரு கட்டமைப்புடன் மாற்றுகின்றன (நீளம்-முன்னமைக்கப்பட்ட சரங்களுக்கு முன்னெப்போதையும் விட மிக அதிகம்), மேலும் பெரும்பாலும் மற்றொரு சுட்டிக்காட்டி, ஒரு குறிப்பு எண்ணிக்கை மற்றும் ஒரு என். யு. எல் கூட சேர்க்கின்றன. நினைவகம் இப்போது மிகப் பெரியதாக உள்ளது, அதாவது ஒவ்வொரு சரத்திற்கும் 3 (அல்லது 16, அல்லது அதற்கு மேற்பட்ட) பைட்டுகளைச் சேர்ப்பது ஒரு உண்மையான சிக்கலாக இருந்தால், மென்பொருள் பல சிறிய சரங்களைக் கையாள வேண்டியிருக்கும், வேறு சில சேமிப்பு முறை இன்னும் அதிக நினைவகத்தை சேமிக்கும் (எடுத்துக்காட்டாக, ஒரு ஹாஷ் அட்டவணை குறைந்த நினைவகத்தைப் பயன்படுத்தும் அளவுக்கு பல நகல்கள் இருக்கலாம்). எடுத்துக்காட்டுகளில் சி + + ஸ்டாண்டர்ட் டெம்ப்ளேட் நூலகம் ஸ்டெர்டிஃஃ ஸ்ட்ரிங், கியூடி கியூஸ்ட்ரிங், எம்எஃப்சி சிஎஸ்ட்ரிங் மற்றும் கோர் ஃபவுண்டேஷனில் இருந்து சி-அடிப்படையிலான செயல்படுத்தல் சிஎஃப்ஸ்ட்ரிங் மற்றும் ஃபவுண்டேஷனில் இருந்து அதன் குறிக்கோள்-சி உடன்பிறப்பு என்எஸ்எஸ்ஸ்ட்ரிங் ஆகியவை அடங்கும். கயிறு போன்ற சரங்களை சேமிக்க மிகவும் சிக்கலான கட்டமைப்புகளும் பயன்படுத்தப்படலாம். வெற்று சரம் சென்டினல் மதிப்பு குறிப்புகள் சரம் தரவு கட்டமைப்புகள் ஈஎஸ்ஃ சி சரம் ஆகியவற்றையும் பார்க்கவும்