சரம் ஒப்பீடு: சி நிரலாக்கம்

String Comparison C Programming



சி மொழியில் ஒரு சரம் என்பது எழுத்துக்களின் வரிசை ஆகும், இது ஒரு பூஜ்ய எழுத்துடன் நிறுத்தப்படுகிறது ( 0). இந்த சொத்தைப் பயன்படுத்தி சரங்கள் ஒப்பிடப்படுகின்றன.







இரண்டு சரங்களை பல்வேறு வழிகளில் ஒப்பிடலாம். இந்த டுடோரியலில், முதலில், இரண்டு சரங்களை ஒப்பிட்டுப் பார்க்க ஒரு பயனர் வரையறுக்கப்பட்ட செயல்பாட்டைக் காண்போம், பின்னர் இரண்டு சரங்களை மிக எளிதாக ஒப்பிட்டுப் பயன்படுத்தக்கூடிய சில உள்ளமைக்கப்பட்ட நூலக செயல்பாடுகளைக் காண்போம். எனவே, ஆரம்பிக்கலாம்.



பயனர் வரையறுக்கப்பட்ட செயல்பாட்டைப் பயன்படுத்தி சரம் ஒப்பீடு:

நாங்கள் ஒரு செயல்பாட்டை எழுதுவோம் stringCompare () சரங்களை ஒப்பிடுவதற்கு. நாம் சரங்களை கடந்து, சரத்தின் ஒவ்வொரு எழுத்தையும் ஒப்பிட்டுப் பார்க்கிறோம், ஒன்று அல்லது இரண்டின் முடிவை அடையும் வரை அல்லது பொருந்தாத ஒன்று காணப்படுகிறது. இரு சரங்களின் முடிவிலும் டிராவல்சலை அடைந்தால், சரங்கள் பொருந்தும்; இல்லையெனில், சரங்கள் பொருந்தவில்லை.



01./* userDefinedFunction.c*/
02.
03.#சேர்க்கிறது
04.
05.intstringCompare( கரிstr1[ ], கரிstr2[ ] )
06.{
07.intநான்=0;
08.
09. போது(str1[நான்] ==str2[நான்] )
10.
பதினைந்து.
16.என்றால்(str1[நான்] == ' 0' &&str2[நான்] == ' 0' )
17.திரும்ப 0;
18.வேறு
19.திரும்ப -1;
இருபது.
இருபத்து ஒன்று.}
22.
2. 3.
24.intமுக்கிய()
25.{
26.கரிstr1[30],str2[30];
27.
28. printf ('முதல் சரத்தை உள்ளிடவும்:');
29. ஸ்கேன்ஃப் ('% [^ n]% * c ',str1);
30. printf (இரண்டாவது சரத்தை உள்ளிடவும்: ');
31. ஸ்கேன்ஃப் ('% [^ n]% * c ',str2);
32.
33.என்றால்(stringCompare(str1,str2) == 0)
3. 4. printf ('சரங்கள் சமம் n');
35.வேறு
36. printf (சரங்கள் சமமாக இல்லை n');
37.
38.திரும்ப 0; 39.}





இங்கே நாம் லூப் மற்றும் ஒரு மாறி பயன்படுத்தி சரங்களை கடந்து செல்கிறோம் நான் . இரண்டு சரங்களின் ஒரே நிலையில் எழுத்துக்கள் சமமாக இருக்கும்போது, ​​மதிப்பு நான் 1 (வரி 13) மூலம் அதிகரிக்கப்படுகிறது. எழுத்துக்கள் சமமாக இல்லாவிட்டால் (வரி 09) அல்லது நாம் சரத்தின் முடிவை (வரி 11) அடைந்தால், அதே நேரத்தில் வளையம் ஒரு இடைவெளி. சிறிது நேரத்திற்குப் பிறகு, இரண்டு சரம் பயணங்களும் முடிவை அடைந்ததா இல்லையா என்பதை நாங்கள் சரிபார்க்கிறோம் (வரி 16). இரு சரங்களின் முடிவிலும் பயணத்தை அடைந்தால், சரங்கள் சமமாக இருக்கும், இல்லையெனில் இல்லை.

உள்ளமைக்கப்பட்ட நூலக செயல்பாடுகளைப் பயன்படுத்தி சரம் ஒப்பீடு:

பின்வரும் நூலகச் செயல்பாடுகளை சரம் ஒப்பிட்டுப் பயன்படுத்தலாம். அனைத்து செயல்பாடுகளும் இதில் அறிவிக்கப்பட்டுள்ளன string.h தலைப்பு கோப்பு.



strcmp () செயல்பாடு:

இந்த செயல்பாடு செயல்பாட்டிற்கு அனுப்பப்பட்ட இரண்டு சரங்களை ஒப்பிடுகிறது.

தொடரியல் :

int strcmp (கான்ஸ்ட் கரி *str1, கான்ஸ்ட் கரி *str2)

வருமான மதிப்பு: சரங்கள் சமமாக இருந்தால் 0 ஐ திரும்பவும். முதல் சரத்தின் முதல் பொருந்தாத எழுத்தின் ASCII மதிப்பு இரண்டாவது சரத்தை விட குறைவாக இருந்தால் எதிர்மறை முழு எண்ணை திருப்பித் தரவும். முதல் சரத்தின் முதல் பொருந்தாத எழுத்தின் ASCII மதிப்பு இரண்டாவது சரத்தை விட அதிகமாக இருந்தால் நேர்மறை முழு எண்ணை வழங்கவும். சில அமைப்புகள் முதல் பொருத்தமில்லாத எழுத்தின் ASCII மதிப்பின் வேறுபாட்டையும் சில அமைப்புகள் திரும்பும் -1 முதல் சரத்தின் முதல் பொருத்தமில்லாத எழுத்தின் ASCII மதிப்பு இரண்டாவது சரத்தை விடக் குறைவாகவும், முதல் பொருந்தாத எழுத்தின் ASCII மதிப்பு 1 ஆகவும் இருந்தால் முதல் சரம் இரண்டாவது சரத்தை விட பெரியது.

உதாரணமாக திரும்பும் மதிப்பு விளக்கம்
strcmp ( வணக்கம் உலகம், வணக்கம் உலகம் ) 0 இரண்டு சரங்கள் ஒன்றே.
strcmp ( வணக்கம், வணக்கம் 0 உலகம் ) 0 ' 0' எழுத்து வரை சரங்கள் ஒப்பிடப்படுகின்றன. இயல்பாக முதல் சரம் ' 0' உடன் முடிவடைகிறது, இரண்டாவது சரம் 'ஹலோ' க்குப் பிறகு ' 0' எழுத்தைக் கொண்டுள்ளது.
strcmp ( வணக்கம் 0 0 0 He, வணக்கம் 0 உலகம் ) 0 ' 0' எழுத்து வரை சரங்கள் ஒப்பிடப்படுகின்றன.
strcmp ( வணக்கம் உலகம், வணக்கம் உலகம் ) எதிர்மறை முழு எண் முதல் சரத்தின் ('H') முதல் பொருந்தாத எழுத்தின் ASCII மதிப்பு இரண்டாவது சரத்தை விட குறைவாக உள்ளது ('h')
strcmp ( வணக்கம் உலகம், வணக்கம் உலகம் ) நேர்மறை முழு எண் முதல் சரத்தின் ('h') முதல் பொருந்தாத எழுத்தின் ASCII மதிப்பு இரண்டாவது சரத்தை ('H') விட அதிகமாக உள்ளது

strncmp () செயல்பாடு:

இந்த செயல்பாடு செயல்பாட்டைப் போன்றது strcmp () , ஆனால் செயல்பாட்டிற்கு கூடுதல் வாதத்தை அனுப்புவதன் மூலம் எத்தனை பைட்டுகள் ஒப்பிடப்படுகின்றன என்பதை இங்கே நாம் குறிப்பிட வேண்டும்.

தொடரியல்:

int strncmp (கான்ஸ்ட் கரி *str1, கான்ஸ்ட் கரி *str2, size_tஎன்)

வருமான மதிப்பு: செயல்பாடு திரும்பும் 0 முதல் என்றால் என் இரண்டு சரங்களின் எழுத்துக்கள் சமம்; இல்லையெனில், முதல் பொருந்தாத தன்மையின் ASCII மதிப்புக்கு இடையிலான வேறுபாடுகளின் அடையாளத்தைப் பொறுத்து இது எதிர்மறை அல்லது நேர்மறை முழு எண்ணை வழங்கும்.

உதாரணமாக திரும்பும் மதிப்பு விளக்கம்
strncmp ( வணக்கம் உலகம், வணக்கம் உலகம், 5 ) 0 முதல் 5 எழுத்துக்கள் ஒன்றே.
strncmp ( வணக்கம், வணக்கம் 0 உலகம், 5 ) 0 முதல் 5 எழுத்துக்கள் ஒன்றே.
strncmp ( வணக்கம் 0 0 0 He, வணக்கம் 0 உலகம், 8 ) 0 இரண்டு சரங்களில் முதல் 5 எழுத்துகளுக்குப் பிறகு ‘ 0’. எனவே, ஒப்பீடு 5 அல்ல 8 க்குப் பிறகு நிறுத்தப்படும்.
strncmp ( வணக்கம் உலகம், வணக்கம் உலகம், 5 ) எதிர்மறை முழு எண் முதல் சரத்தின் ('H') முதல் பொருந்தாத எழுத்தின் ASCII மதிப்பு இரண்டாவது சரத்தை விட குறைவாக உள்ளது ('h')

strcasecmp () செயல்பாடு:

இந்த செயல்பாடு செயல்பாட்டைப் போன்றது strcmp () , ஆனால் இங்கே சரங்கள் வழக்கு உணர்திறன் இல்லை.

தொடரியல்:

intstrcasecmp(கான்ஸ்ட் கரி *str1, கான்ஸ்ட் கரி *str2)

வருமான மதிப்பு: அதே போல strcmp () , ஆனால் சரங்கள் கருதப்படுகின்றன வழக்கு-உணர்திறன் .

உதாரணமாக திரும்பும் மதிப்பு விளக்கம்
strcasecmp ( வணக்கம் உலகம், வணக்கம் உலகம் ) 0 இரண்டு சரங்கள் ஒன்றே.
strcasecmp ( வணக்கம், வணக்கம் 0 உலகம் ) 0 ' 0' எழுத்து வரை சரங்கள் ஒப்பிடப்படுகின்றன. இயல்பாக முதல் சரம் ' 0' உடன் முடிவடைகிறது, இரண்டாவது சரம் 'ஹலோ' க்குப் பிறகு ' 0' எழுத்தைக் கொண்டுள்ளது.
strcasecmp ( வணக்கம் உலகம், வணக்கம் உலகம் ) 0 சரங்கள் உள்ளன வழக்கு-உணர்திறன். எனவே, வணக்கம் உலகமும் வணக்கம் உலகமும் ஒன்றே.

strncasecmp () செயல்பாடு:

இந்த செயல்பாடு செயல்பாட்டைப் போன்றது strncmp () , ஆனால் இங்கே சரங்கள் வழக்கு உணர்திறன் இல்லை.

தொடரியல்:

intstrncasecmp(கான்ஸ்ட் கரி *str1, கான்ஸ்ட் கரி *str2)

வருமான மதிப்பு: அதே போல strncmp () சரங்களை கேஸ்-இன்-சென்சிடிவியாகக் கருதும்போது.

உதாரணமாக திரும்பும் மதிப்பு விளக்கம்
strncasecmp ( வணக்கம் உலகம், வணக்கம் உலகம், 5 ) 0 முதல் 5 எழுத்துக்கள் ஒன்றே.
strncasecmp ( வணக்கம், வணக்கம் 0 உலகம், 5 ) 0 முதல் 5 எழுத்துக்கள் ஒன்றே.
strncasecmp ( வணக்கம் 0 0 0 He, வணக்கம் 0 உலகம், 8 ) 0 இரண்டு சரங்களில் முதல் 5 எழுத்துகளுக்குப் பிறகு ‘ 0’. எனவே, ஒப்பீடு 5 அல்ல 8 க்குப் பிறகு நிறுத்தப்படும்.
strncasecmp ( வணக்கம் உலகம், வணக்கம் உலகம், 5 ) 0 சரங்கள் உள்ளன வழக்கு-உணர்திறன். எனவே, வணக்கம் மற்றும் வணக்கம் ஒன்றுதான்.

எம்எம்சிஎம்பி () செயல்பாடு:

இந்த செயல்பாடு பைட் மூலம் இரண்டு மெமரி தொகுதிகள் பைட்டை ஒப்பிடுகிறது. நாம் ஒப்பிட்டுப் பார்க்க நினைவகத் தொகுதிகள் மற்றும் பைட்டுகளின் எண்ணிக்கையின் இரண்டு சுட்டிகளைக் கடக்க வேண்டும்.

தொடரியல்:

int எம்எம்சிஎம்பி (கான்ஸ்ட் வெற்றிடம் *str1, கான்ஸ்ட் வெற்றிடம் *str2, size_tஎன்)

வருமான மதிப்பு: இரண்டு நினைவகம் தடுத்தால் செயல்பாடு 0 ஐ வழங்குகிறது ( என் பைட்டுகள்) சமம்; இல்லையெனில், இது முதல் பொருந்தாத ஜோடி பைட்டுகளுக்கு இடையிலான வேறுபாடுகளை அளிக்கிறது (பைட்டுகள் கையொப்பமிடப்படாத கரி பொருள்கள் என விளக்கப்படுகிறது, பின்னர் எண்ணாக உயர்த்தப்படுகிறது).

உதாரணமாக திரும்பும் மதிப்பு விளக்கம்
எம்எம்சிஎம்பி ( வணக்கம் உலகம், வணக்கம் உலகம், 5 ) 0 முதல் 5 எழுத்துக்கள் ஒன்றே.
எம்எம்சிஎம்பி ( வணக்கம் 0 0 0 He, வணக்கம் 0 உலகம், 8 ) எதிர்மறை முழு எண் முதல் 6 எழுத்துக்கள் ஒன்றே, ஆனால் 7 வது எழுத்து வேறுபட்டது. இங்கே ஒப்பீடு நிறுத்தப்படவில்லை strncmp () ' 0' எழுத்தை பெறும்போது.
எம்எம்சிஎம்பி ( வணக்கம் உலகம், வணக்கம் உலகம், 11 ) எதிர்மறை முழு எண் முதல் சரத்தின் ('H') முதல் பொருந்தாத எழுத்தின் ASCII மதிப்பு இரண்டாவது சரத்தை விட குறைவாக உள்ளது ('h')

உதாரணமாக:

விவாதிக்கப்பட்ட அனைத்து செயல்பாடுகளின் சி குறியீடு உதாரணம் பின்வருமாறு.

01./*stringCompare.c*/
02.
03.#சேர்க்கிறது
04.#சேர்க்கிறது
05.
06.intமுக்கிய()
07.{
08. printf ('strcmp ('வணக்கம் உலகம்','வணக்கம் உலகம்') => %d n', strcmp ( 'வணக்கம் உலகம்','வணக்கம் உலகம்' ));
09. printf ('strcmp ('வணக்கம்','வணக்கம்\0உலகம்') => %d n', strcmp ( 'வணக்கம்','வணக்கம் 0உலகம்' ));
10. printf ('strcmp ('வணக்கம் உலகம்','வணக்கம் உலகம்') => %d n', strcmp ( 'வணக்கம் உலகம்','வணக்கம் உலகம்' ) );
பதினொன்று. printf ('strcmp ('வணக்கம்\0\0\0','வணக்கம்\0உலகம்') => %d n', strcmp ( 'வணக்கம் 0 0 0','வணக்கம் 0உலகம்' ));
12.
13. printf (' n--------------- n');
14.
பதினைந்து. printf ('strncmp ('வணக்கம் உலகம்','வணக்கம் உலகம்', 5) => %d n', strncmp ( 'வணக்கம் உலகம்','வணக்கம் உலகம்',5 ));
16. printf ('strncmp ('வணக்கம்','வணக்கம்\0உலகம்', 5) => %d n', strncmp ( 'வணக்கம்','வணக்கம் 0உலகம்',5 ));
17. printf ('strncmp ('வணக்கம்\0\0\0','வணக்கம்\0உலகம்', 8) => %d n', strncmp ( 'வணக்கம் 0 0 0','வணக்கம் 0உலகம்',8 ));
18. printf ('strncmp ('வணக்கம் உலகம்','வணக்கம் உலகம்', 5) => %d n', strncmp ( 'வணக்கம் உலகம்','வணக்கம் உலகம்',5 ));
19.
இருபது. printf (' n--------------- n');
இருபத்து ஒன்று.
22. printf ('strcasecmp ('வணக்கம் உலகம்','வணக்கம் உலகம்') => %d n',strcasecmp( 'வணக்கம் உலகம்','வணக்கம் உலகம்' ));
2. 3. printf ('strcasecmp ('வணக்கம்','வணக்கம்\0உலகம்') => %d n',strcasecmp( 'வணக்கம்','வணக்கம் 0உலகம்' ));
24. printf ('strcasecmp ('வணக்கம் உலகம்','வணக்கம் உலகம்') => %d n',strcasecmp( 'வணக்கம் உலகம்','வணக்கம் உலகம்' ));
25.
26. printf (' n--------------- n');
27.
28. printf ('strncasecmp ('வணக்கம் உலகம்','வணக்கம் உலகம்', 5) => %d n',strncasecmp( 'வணக்கம் உலகம்','வணக்கம் உலகம்',5 ) );
29. printf ('strncasecmp ('வணக்கம்','வணக்கம்\0உலகம்', 5) => %d n',strncasecmp( 'வணக்கம்','வணக்கம் 0உலகம்',5 ));
30. printf ('strncasecmp ('வணக்கம்\0\0\0','வணக்கம்\0உலகம்', 8) => %d n',strncasecmp( 'வணக்கம் 0 0 0','வணக்கம் 0உலகம்',8 ));
31. printf ('strncasecmp ('வணக்கம் உலகம்','வணக்கம் உலகம்', 5) => %d n',strncasecmp( 'வணக்கம் உலகம்','வணக்கம் உலகம்',5 ));
32.
33. printf (' n--------------- n');
3. 4.
35. printf ('எம்எம்சிஎம்பி ('வணக்கம் உலகம்','வணக்கம் உலகம்', 5) => %d n', எம்எம்சிஎம்பி ( 'வணக்கம் உலகம்','வணக்கம் உலகம்',5 ) );
36. printf ('எம்எம்சிஎம்பி ('வணக்கம்\0\0\0','வணக்கம்\0உலகம்', 8) => %d n', எம்எம்சிஎம்பி ( 'வணக்கம் 0 0 0','வணக்கம் 0உலகம்',8 ));
37. printf ('எம்எம்சிஎம்பி ('வணக்கம் உலகம்','வணக்கம் உலகம்', 11) => %d n', எம்எம்சிஎம்பி ( 'வணக்கம் உலகம்','வணக்கம் உலகம்',பதினொன்று ));
38.
39.திரும்ப 0; 40.}

முடிவுரை:

எனவே, இந்த டுடோரியலில், சரங்களை பல்வேறு வழிகளில் எப்படி ஒப்பிடலாம் என்று பார்த்தோம். நாம் பார்த்தபடி, stringCompare () செயல்பாடு சமமற்ற சரங்களுக்கு -1 -ஐத் தருகிறது, ஆனால் இதை மாற்றியமைக்கலாம், இதனால் அது பொருந்தாத தன்மையின் ASCII மதிப்பை அளிக்கிறது. உங்கள் குறியீட்டில் நீங்கள் பயன்படுத்தலாம், இது உங்களுக்கு மிகவும் பொருத்தமானது.