Paghahambing sa String: C Programming

String Comparison C Programming



Ang isang string sa C na wika ay isang hanay ng mga character, na winakasan ng isang null character ( 0). Ang paggamit ng mga ari-arian ng ari-arian na ito ay inihambing.







Ang dalawang mga string ay maaaring ihambing sa iba't ibang mga paraan. Sa tutorial na ito, una, makakakita kami ng isang function na tinukoy ng gumagamit upang ihambing ang dalawang mga string, at pagkatapos ay makikita namin ang ilang mga built-in na pagpapaandar sa library na maaaring magamit upang ihambing ang dalawang mga string nang napakadali. Kaya, magsimula na tayo.



Paghahambing ng string gamit ang isang function na tinukoy ng gumagamit:

Magsusulat kami ng isang pagpapaandar stringCompare () upang ihambing ang mga string. Daanan namin ang mga string at ihambing ang bawat character ng string hanggang maabot namin ang dulo ng anumang isa o pareho o isang hindi pagtutugma na matagpuan. Kung ang traversal ay naabot sa dulo ng parehong mga string, pagkatapos ang mga string ay naitugma; kung hindi man, ang mga string ay hindi tugma.



01./*userDefinedFunction.c*/
02.
03.# isama
04.
05.intstringCompare( charstr1[ ], charstr2[ ] )
06.{
07.intako=0;
08.
09. habang(str1[ako] ==str2[ako] )
10.
labinlimang.
16.kung(str1[ako] == ' 0' &&str2[ako] == ' 0' )
17.bumalik ka 0;
18.iba pa
19.bumalik ka -1;
dalawampu.
dalawampu't isa.}
22.
2. 3.
24.intpangunahing()
25.{
26.charstr1[30],str2[30];
27.
28. printf ('Ipasok ang unang string:');
29. scanf ('% [^ n]% * c ',str1);
30. printf ('Ipasok ang pangalawang string:');
31. scanf ('% [^ n]% * c ',str2);
32.
33.kung(stringCompare(str1,str2) == 0)
3. 4. printf ('Ang mga string ay pantay n');
35.iba pa
36. printf ('Ang mga string ay hindi pantay n');
37.
38.bumalik ka 0; 39.}





Dadaanan namin ang mga string gamit ang habang loop at isang variable ako . Kapag ang mga character ay pantay sa parehong posisyon ng parehong mga string, ang halaga ng ako ay nadagdagan ng 1 (linya 13). Kung ang mga character ay hindi pantay (linya 09) o naabot namin ang dulo ng string (linya 11), pagkatapos ang habang loop ay isang pahinga. Matapos ang loop habang, suriin namin ang parehong mga string traversal ay naabot sa dulo o hindi (linya 16). Kung ang traversal ay naabot sa dulo ng parehong mga string, kung gayon ang mga string ay pantay kung hindi man.

Paghahambing ng string gamit ang built-in na mga pagpapaandar sa library:

Ang mga sumusunod na pagpapaandar sa library ay maaaring gamitin para sa paghahambing ng string. Ang lahat ng mga pagpapaandar ay idineklara sa string.h file ng header.



pagpapaandar ng strcmp ():

Ang pagpapaandar na ito ay naghahambing ng dalawang mga string na ipinasa sa pagpapaandar.

Syntax :

int strcmp (Const char *str1, Const char *str2)

Halaga ng pagbalik: Ibalik ang 0 kung ang mga string ay pantay. Ibalik ang isang negatibong integer kung ang ASCII na halaga ng unang hindi tugma na character ng unang string ay mas mababa kaysa sa pangalawang string. Ibalik ang isang positibong integer kung ang ASCII na halaga ng unang hindi tugma na character ng unang string ay mas malaki kaysa sa pangalawang string. Ang ilang mga system ay nagbabalik ng pagkakaiba ng ASCII na halaga ng unang hindi tugma na character at ang ilang mga system ay bumalik -1 kung ang ASCII na halaga ng unang hindi tugma na character ng unang string ay mas mababa kaysa sa pangalawang string at ibalik ang 1 kung ang ASCII na halaga ng unang hindi tugma na character ng ang unang string ay mas malaki kaysa sa pangalawang string.

Halimbawa Halaga ng Pagbabalik Paliwanag
strcmp ( Kamusta Mundo, Kamusta Mundo ) 0 Ang dalawang mga string ay pareho.
strcmp ( Kumusta, Kamusta 0 Mundo ) 0 Ang mga string ay inihambing hanggang sa character na ' 0'. Ang unang string bilang default ay nagtatapos sa ' 0', at ang pangalawang string ay naglalaman ng character na ' 0' pagkatapos ng 'Hello'.
strcmp ( Kamusta 0 0 0 ″, Kamusta 0 Mundo ) 0 Ang mga string ay inihambing hanggang sa character na ' 0'.
strcmp ( Hello World, hello World ) Negatibong integer Ang halaga ng ASCII ng unang hindi tugma na character ng unang string ('H') ay mas mababa sa pangalawang string ('h')
strcmp ( hello World, Hello World ) Positibong integer Ang halaga ng ASCII ng unang hindi tugma na character ng unang string ('h') ay mas malaki kaysa sa pangalawang string ('H')

pagpapaandar ng strncmp ():

Ang pagpapaandar na ito ay katulad ng pagpapaandar strcmp () , ngunit narito dapat nating tukuyin kung gaano karaming mga byte ang inihambing sa pamamagitan ng pagpasa ng isang labis na argument sa pagpapaandar.

Syntax:

int strncmp (Const char *str1, Const char *str2, size_tn)

Halaga ng pagbalik: Nagbabalik ang pagpapaandar 0 kung ang una n ang mga character ng dalawang string ay pantay; kung hindi man, nagbabalik ito ng negatibo o positibong integer depende sa pag-sign ng mga pagkakaiba sa pagitan ng halagang ASCII na halaga ng unang hindi tugma.

Halimbawa Halaga ng Pagbabalik Paliwanag
strncmp ( Hello World, Hello World, 5 ) 0 Ang unang 5 character ay pareho.
strncmp ( Kumusta, Kamusta 0 Mundo, 5 ) 0 Ang unang 5 character ay pareho.
strncmp ( Kamusta 0 0 0 ″, Kamusta 0 Mundo, 8 ) 0 Ang ‘ 0’ ay pagkatapos ng unang 5 mga character sa parehong mga string. Kaya, ang paghahambing ay tumigil pagkatapos ng 5 hindi 8.
strncmp ( Hello World, hello World, 5 ) Negatibong integer Ang halaga ng ASCII ng unang hindi tugma na character ng unang string ('H') ay mas mababa sa pangalawang string ('h')

pagpapaandar ng strcasecmp ():

Ang pagpapaandar na ito ay katulad ng pagpapaandar strcmp () , ngunit narito ang mga string ay hindi sensitibo sa kaso.

Syntax:

intstrcasecmp(Const char *str1, Const char *str2)

Halaga ng pagbalik: Katulad ng strcmp () , ngunit ang mga string ay itinuturing bilang case-in-sensitive .

Halimbawa Halaga ng Pagbabalik Paliwanag
strcasecmp ( Kamusta Mundo, Kamusta Mundo ) 0 Ang dalawang mga string ay pareho.
strcasecmp ( Kumusta, Kamusta 0 Mundo ) 0 Ang mga string ay inihambing hanggang sa character na ' 0'. Ang unang string bilang default ay nagtatapos sa ' 0', at ang pangalawang string ay naglalaman ng character na ' 0' pagkatapos ng 'Hello'.
strcasecmp ( Hello World, hello World ) 0 Ang mga kuwerdas ay case-in-sensitive. Kaya, Hello World at hello World ay pareho.

pagpapaandar ng strncasecmp ():

Ang pagpapaandar na ito ay katulad ng pagpapaandar strncmp () , ngunit narito ang mga string ay hindi sensitibo sa kaso.

Syntax:

intstrncasecmp(Const char *str1, Const char *str2)

Halaga ng pagbalik: Katulad ng strncmp () , kapag ang mga string ay ginagamot bilang case-in-sensitive.

Halimbawa Halaga ng Pagbabalik Paliwanag
strncasecmp ( Hello World, Hello World, 5 ) 0 Ang unang 5 character ay pareho.
strncasecmp ( Kumusta, Kamusta 0 Mundo, 5 ) 0 Ang unang 5 character ay pareho.
strncasecmp ( Kamusta 0 0 0 ″, Kamusta 0 Mundo, 8 ) 0 Ang ‘ 0’ ay pagkatapos ng unang 5 mga character sa parehong mga string. Kaya, ang paghahambing ay tumigil pagkatapos ng 5 hindi 8.
strncasecmp ( Hello World, hello World, 5 ) 0 Ang mga kuwerdas ay case-in-sensitive. Kaya, Kamusta at kamusta ay pareho.

pagpapaandar ng memcmp ():

Inihahambing ng pagpapaandar na ito ang dalawang memory blocks byte by byte. Kailangan nating pumasa sa dalawang mga puntos ng mga bloke ng memorya at ang bilang ng mga byte upang ihambing.

Syntax:

int memcmp (Const walang bisa *str1, Const walang bisa *str2, size_tn)

Halaga ng pagbalik: Ibinabalik ng pagpapaandar ang 0 kung ang dalawang mga bloke ng memorya ( n bytes) ay pantay; kung hindi man, ibinalik nito ang mga pagkakaiba sa pagitan ng unang hindi tugma na pares ng mga byte (ang mga byte ay binibigyang kahulugan bilang mga hindi naka-sign na char object, pagkatapos ay isinulong sa int).

Halimbawa Halaga ng Pagbabalik Paliwanag
memcmp ( Hello World, Hello World, 5 ) 0 Ang unang 5 character ay pareho.
memcmp ( Kamusta 0 0 0 ″, Kamusta 0 Mundo, 8 ) Negatibong integer Ang unang 6 na character ay pareho, ngunit ang ika-7 na karakter ay magkakaiba. Narito ang paghahambing ay hindi tumigil tulad ng strncmp () kapag nakakakuha ng character na ' 0'.
memcmp ( Hello World, hello World, 11 ) Negatibong integer Ang halaga ng ASCII ng unang hindi tugma na character ng unang string ('H') ay mas mababa sa pangalawang string ('h')

Halimbawa:

Ang sumusunod ay ang halimbawa ng C code ng lahat ng mga pagpapaandar na tinalakay.

01./*stringCompare.c*/
02.
03.# isama
04.# isama
05.
06.intpangunahing()
07.{
08. printf ('strcmp ('Kamusta Mundo','Kamusta Mundo') =>% d n', strcmp ( 'Hello World','Hello World' ));
09. printf ('strcmp ('Kamusta','Kamusta\0Mundo') =>% d n', strcmp ( 'Kamusta','Kamusta 0Mundo ' ));
10. printf ('strcmp ('Kamusta Mundo','hello World') =>% d n', strcmp ( 'Hello World','hello World' ) );
labing-isang. printf ('strcmp ('Kamusta\0\0\0','Kamusta\0Mundo') =>% d n', strcmp ( 'Kamusta 0 0 0','Kamusta 0Mundo ' ));
12.
13. printf (' n------------ n');
14.
labinlimang. printf ('strncmp ('Kamusta Mundo','Kamusta Mundo', 5) =>% d n', strncmp ( 'Hello World','Hello World',5 ));
16. printf ('strncmp ('Kamusta','Kamusta\0Mundo', 5) =>% d n', strncmp ( 'Kamusta','Kamusta 0Mundo ',5 ));
17. printf ('strncmp ('Kamusta\0\0\0','Kamusta\0Mundo', 8) =>% d n', strncmp ( 'Kamusta 0 0 0','Kamusta 0Mundo ',8 ));
18. printf ('strncmp ('Kamusta Mundo','hello World', 5) =>% d n', strncmp ( 'Hello World','hello World',5 ));
19.
dalawampu. printf (' n------------ n');
dalawampu't isa.
22. printf ('strcasecmp ('Kamusta Mundo','Kamusta Mundo') =>% d n',strcasecmp( 'Hello World','Hello World' ));
2. 3. printf ('strcasecmp ('Kamusta','Kamusta\0Mundo') =>% d n',strcasecmp( 'Kamusta','Kamusta 0Mundo ' ));
24. printf ('strcasecmp ('Kamusta Mundo','hello World') =>% d n',strcasecmp( 'Hello World','hello World' ));
25.
26. printf (' n------------ n');
27.
28. printf ('strncasecmp ('Kamusta Mundo','Kamusta Mundo', 5) =>% d n',strncasecmp( 'Hello World','Hello World',5 ) );
29. printf ('strncasecmp ('Kamusta','Kamusta\0Mundo', 5) =>% d n',strncasecmp( 'Kamusta','Kamusta 0Mundo ',5 ));
30. printf ('strncasecmp ('Kamusta\0\0\0','Kamusta\0Mundo', 8) =>% d n',strncasecmp( 'Kamusta 0 0 0','Kamusta 0Mundo ',8 ));
31. printf ('strncasecmp ('Kamusta Mundo','hello World', 5) =>% d n',strncasecmp( 'Hello World','hello World',5 ));
32.
33. printf (' n------------ n');
3. 4.
35. printf ('memcmp ('Kamusta Mundo','Kamusta Mundo', 5) =>% d n', memcmp ( 'Hello World','Hello World',5 ) );
36. printf ('memcmp ('Kamusta\0\0\0','Kamusta\0Mundo', 8) =>% d n', memcmp ( 'Kamusta 0 0 0','Kamusta 0Mundo ',8 ));
37. printf ('memcmp ('Kamusta Mundo','hello World', 11) =>% d n', memcmp ( 'Hello World','hello World',labing-isang ));
38.
39.bumalik ka 0; 40.}

Konklusyon:

Kaya, sa tutorial na ito, nakita namin kung paano maihahambing ang mga string sa iba't ibang mga paraan. Tulad ng nakita natin, ang function ng stringCompare () ay nagbabalik -1 para sa hindi pantay na mga string, ngunit maaari itong mabago upang maibalik nito ang halaga ng ASCII ng hindi tugma na character. Maaari mo itong gamitin sa iyong code, na pinakaangkop para sa iyo.