सी मध्ये एसटीसीएमपी () फंक्शन

सी स्टँडर्ड लायब्ररीमध्ये स्ट्रिंग तुलनासाठी एसटीसीएमपी () फंक्शन समाविष्ट आहे. सी प्रोग्रामिंगमध्ये, हे वारंवार दोन तारांची तुलना करण्यासाठी वापरले जाते आणि <स्ट्रिंग.एच> हेडरचा एक घटक आहे. दोन तारांमधील कनेक्शन फंक्शनच्या रिटर्न व्हॅल्यूद्वारे दर्शविले जाते, जे पूर्णांक मूल्य आहे. एसटीसीएमपी (फर्स्ट_स्ट्रिंग, सेकंड_स्ट्रिंग) फंक्शन दोन तारांची तुलना करते आणि दोन्ही तार समान असल्यास 0 परत करते. तुलना केली जाणार्‍या पहिल्या स्ट्रिंगचे पॉईंटर, str1. तुलना केली जाणार्‍या दुसर्‍या स्ट्रिंगचे पॉईंटर, एसटी 2. जर एसटीआर 1 एसटीआर 2 पेक्षा कोशिकोगाने श्रेष्ठ असेल तर तो 0 पेक्षा मोठा पूर्णांक संख्या परत करते. जर एसटीआर 1 एसटीआर 2 ला कोशिकदृष्ट्या लहान असेल तर ते 0 पेक्षा कमी एक पूर्णांक मूल्य परत करते. एसटीआर 1 आणि एसटी 2 समान असल्यास ते 0 परत करते. येथे, आम्ही गेट्स () फंक्शन वापरत आहोत, जे कन्सोलमधून स्ट्रिंग वाचते.

उदाहरण

#vaapara<PsaTidiAayaAae.Pca>
#vaapara <SabD.Pca>
paunaZ mauqya(){
Axar ejata1[20],ejata2[20];
laiha("pzavaiST kra 1 laa sTiMga: ");
SabD_vaacaa(ejata1);//vaacataae SabD paasauna knsaaela
laiha("pzavaiST kra 2 ra sTiMga: ");
SabD_vaacaa(ejata2);
jar(SabDa_taulanaa(ejata1,ejata2)==0)
laiha("taar Aaheta samaana");
nahitar
laiha("taar Aaheta naahi samaana");
vaapasakra 0;
}

आउटपुट

pzavaiSTRkra 1Rlaa SabD: hWlaae
pzavaiSTRkra 2Rra SabD: hWlaae
taar Aaheta samaana

स्पष्टीकरण:

प्रोग्राम योग्य शीर्षलेख फायलींसह येतो, ज्यात स्टँडर्ड इनपुट/आउटपुट आणि एसटीआरसीएमपी () सह स्ट्रिंगशी संबंधित कार्यांसाठी "स्ट्रिंग.एच" समाविष्ट आहे. दोन-वर्ण अ‍ॅरे एसटीआर 1 आणि आकार 20 च्या एसटी 2 ला वापरकर्त्याने पुरविलेल्या इनपुट तार ठेवण्यासाठी घोषित केले आहे. प्रिंटएफ () पद्धत वापरुन, प्रोग्राम वापरकर्त्यास प्रथम स्ट्रिंग इनपुट करण्यास सांगते. इनपुट स्ट्रिंग गेट्स () पद्धतीचा वापर करून कन्सोलमधून वाचले जाते. तथापि, हे अधोरेखित करणे महत्त्वपूर्ण आहे की ओव्हरफ्लो हल्ल्यांच्या बफरच्या संवेदनशीलतेमुळे () गेट्स () नापसंत होते आणि सल्ला दिला जात नाही. अशाच प्रकारे, प्रोग्राम वापरकर्त्यास ते वाचण्यासाठी SabD_vaacaa () वापरण्यापूर्वी दुसर्‍या स्ट्रिंगमध्ये प्रविष्ट करण्यास सांगते. त्यानंतर, एसटीआरसीएमपी () पद्धतीचा वापर करून दोन तार एसटीआर 1 आणि एसटी 2 ची तुलना केली जाते. दोन स्ट्रिंग्स समान आहेत जर एसटीसीएमपी () 0 रिटर्न 0 परत करा, प्रोग्राम प्रिंटफ () वापरून "स्ट्रिंग समान आहेत" लिहितात. अन्यथा, एसटीआरसीएमपी () शून्य नसलेला परिणाम परत मिळवून देत असल्यास प्रोग्राम "स्ट्रिंग समान नसतात". शेवटी, मुख्य कार्य 0 परत करते, हे दर्शविते की प्रोग्राम यशस्वीरित्या चालला आहे. दोन तार एसटीसीएमपी () पद्धतीच्या तुलनेत कॅरेक्टर-बाय-कॅरेक्टर आहेत. तुलना प्रक्रिया प्रत्येक स्ट्रिंगच्या पहिल्या वर्णांसह सुरू होते. जर ते समान असतील तर ते एकतर येईपर्यंत त्यानंतरच्या वर्णांमध्ये प्रगती करते: हे ठरवते की जुळणार्‍या वर्णांमधील फरकांवर आधारित कोणती स्ट्रिंग कोशिकदृष्ट्या मोठी किंवा लहान आहे किंवा ती एक किंवा दोन्ही तारांच्या शेवटी पोहोचते. वर्णांची एएससीआयआय मूल्ये तुलनेत वापरली जातात. अप्परकेस आणि लोअरकेस अक्षरे तुलनेत वेगळ्या पद्धतीने पाहिली जातात कारण ती प्रकरण विचारात घेते. फंक्शन असे मानते की इनपुट म्हणून देण्यात आलेल्या तारांना शून्य-मुदत दिले जाते. शून्य वर्ण ('0') ने समाप्त होणारी एक स्ट्रिंग शून्य-टर्मिनेटेड स्ट्रिंग म्हणून ओळखली जाते. या उदाहरणात, गेट्स () फंक्शनचा वापर कन्सोलमधून तार वाचण्यासाठी केला जातो. हे लक्षात घेणे महत्वाचे आहे की सी प्रोग्रामिंग भाषेत गेट्स () पद्धत नापसंत केली गेली आहे आणि जोरदार निराश झाली आहे. या समस्येचे मुख्य कारण असे आहे की इनपुटमधून किती वर्ण वाचले जातात हे नियंत्रित करण्याची कोणतीही पद्धत () नाही, ज्यामुळे सुरक्षा त्रुटी उद्भवू शकतात अशा ओव्हरफ्लो हल्ल्यांना असुरक्षित आहे. सुरक्षितपणे तार वाचण्यासाठी कन्सोलच्या जागी एफगेट्स () वापरण्याचा सल्ला दिला जातो. बफर ओव्हरफ्लो टाळण्यासाठी, एफगेट्स () फंक्शन आपल्याला वाचण्यासाठी जास्तीत जास्त वर्णांची संख्या सेट करू देते.

◀ मागील पुढील ▶