logo

C strcmp()

I C-sprog indeholder overskriftsfilen Standard String Library, der indeholder nogle nyttige og almindeligt anvendte strengmanipulationsfunktioner. I denne artikel vil vi se, hvordan man sammenligner strenge i C ved hjælp af funktionen strcmp().

Hvad er strcmp() i C?

C strcmp() er en indbygget biblioteksfunktion, der bruges til strengsammenligning. Denne funktion tager to strenge (array af tegn) som argumenter, sammenligner disse to strenge leksikografisk , og returnerer derefter 0,1 eller -1 som resultat. Det er defineret indeni header-fil med sin prototype som følger:



Syntaks for strcmp() i C

strcmp( first_str , second_str );>

Parametre for strcmp() i C

Denne funktion tager to strenge (array af tegn) som parametre:

    first_str: Første streng tages som en pegepind til konstanttegn (dvs. uforanderlig streng). second_str: Anden streng tages som en pointer til et konstant tegn.

Bemærk: Grunden til, at argumenter tages som const char * i stedet for kun char * er, at funktionen ikke kunne ændre strengen og også gøre dem anvendelige for konstante strenge.

Returner værdien af ​​strcmp() i C

Strcmp()-funktionen returnerer tre forskellige værdier efter sammenligningen af ​​de to strenge, som er som følger:



1. Nul ( 0 )

En værdi lig med nul, når begge strenge findes at være identiske. Det er, alle tegnene i begge strenge er de samme.

2. Større end nul (> 0 )

En værdi større end nul returneres, når første ikke-matchende tegn i first_str har en større ASCII-værdi end det tilsvarende tegn i second_str eller vi kan også sige, at hvis tegnet i first_str er leksikografisk efter tegnet af second_str, så returneres nul.

3. Mindre end nul ( <0 )

En værdi mindre end nul returneres, når første ikke-matchende tegn i first_str har en mindre ASCII-værdi end det tilsvarende tegn i second_str . Vi kan også sige, at hvis tegnet i first_str er leksikografisk før tegnet af second_str, returneres nul.



For at vide mere om ASCII-værdier, se denne artikel – ASCII-tabel

Sådan bruges strcmp()-funktionen i C

Følgende eksempel viser, hvordan man bruger strcmp()-funktionen i C:

C




// C Program to Demonstrate the use of strcmp() function> #include> #include> int> main()> {> >// declaring two same string> >char>* first_str =>'Geeks'>;> >char>* second_str =>'Geeks'>;> >// printing the strings> >printf>(>'First String: %s '>, first_str);> >printf>(>'Second String: %s '>, second_str);> >// printing the return value of the strcmp()> >printf>(>'Return value of strcmp(): %d'>,> >strcmp>(first_str, second_str));> >return> 0;> }>

java gør mens
>

>

statisk funktion i java
Produktion

First String: Geeks Second String: Geeks Return value of strcmp(): 0>

Hvordan virker strcmp() i C?

C strcmp()-funktionen fungerer ved at sammenligne to strenge leksikografisk . Det betyder, at den sammenligner ASCII-værdien for hvert tegn, indtil den ikke-matchende værdi er fundet, eller NULL-tegnet er fundet. Funktionen af ​​C strcmp()-funktionen kan beskrives som følger:

1. Det starter med at sammenligne ASCII-værdierne for de første tegn i begge strenge.

2. Hvis de første tegn i begge strenge er ens, vil denne funktion kontrollere det andet tegn, hvis de også er ens, så vil det kontrollere det tredje, og så videre, indtil det første umatchede tegn er fundet, eller NULL-tegnet er fundet.

3. Hvis en NULL-tegn er fundet , funktionen returnerer nul da begge strenge vil være ens.

strcmp med nul som retur-vlaue

4. Hvis der findes et ikke-matchende tegn,

  • Hvis ASCII-værdien for karakteren af ​​den første streng er større end den for den anden streng, så er den positive forskel ( > 0 ) mellem deres ASCII-værdier returneres.
strcmp med positiv afkastværdi
  • Hvis ASCII-værdien af ​​tegnet i den første streng er mindre end den for den anden streng, så er den negative forskel ( < 0 ) mellem deres ASCII-værdier returneres.
strcmp med negativ returværdi

Alle disse tre tilfælde er vist i nedenstående eksempler.

Eksempler på strcmp() i C

Eksempel 1. strcmp() adfærd for identiske strenge

Dette program illustrerer opførselen af ​​strcmp()-funktionen for identiske strenge.

C




// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> > >char> first_str[] =>'g f g'>;> >char> second_str[] =>'g f g'>;> > >// Using strcmp()> >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>' Value returned by strcmp() is: %d'> , res);> >return> 0;> }>

>

>

Produktion

Strings are equal Value returned by strcmp() is: 0>

Eksempel 2. strcmp()-adfærd for den leksikografisk større første streng

Eksemplet nedenfor viser strcmp()-funktionens adfærd for den leksikografisk større første streng.

C


kruskals algoritme



// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// z has greater ASCII value than g> >char> first_str[] =>'zfz'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>' Value of result: %d'> , res);> > >return> 0;> }>

>

>

Produktion

Strings are unequal Value of result: 19>

Eksempel 3. strcmp() adfærd for den leksikografisk mindre første streng.

Eksemplet nedenfor viser strcmp()-funktionens adfærd for den leksikografisk mindre første streng.

C




den fulde form

// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// b has less ASCII value than g> >char> first_str[] =>'bfb'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>' Value returned by strcmp() is: %d'> , res);> > > >return> 0;> }>

>

>

Produktion

Strings are unequal Value returned by strcmp() is: -5>

Konklusion

I denne artikel diskuterede vi C standard biblioteksfunktion strcmp() som bruges til at sammenligne to strenge leksikografisk. Standardbiblioteket indeholder nogle nyttige og hyppigt anvendte funktioner, der gør programmeringen nemmere, da de hjælper med at undgå at omskrive den almindeligt anvendte funktion igen og igen, når det er nødvendigt.

Ofte stillede spørgsmål om strcmp() i C

1. Hvordan kan vi sammenligne to strenge i C?

Flere år: Vi kan bruge strcmp()-funktionen, som er defineret i header-filen til leksikografisk at sammenligne to strenge (array af tegn).

2. Hvad er funktionsprototypen for strcmp() i C?

Flere år: Funktionsprototypen for strcmp()-funktionen er som følger:

int strcmp(const char* lhs , const char* rhs );>

3. Når strcmp()-funktionen returnerer nul?

Flere år: Strcmp()-funktionen returnerer nul, når de to strenge er identiske.

4. Hvad betyder den positive returværdi af strcmp()-funktionen?

Flere år: Strcmp()-funktionen returnerer en positiv værdi, når den første streng er leksikografisk større end den anden streng.

5. Hvad betyder den negative returværdi af strcmp()-funktionen?

Flere år: Den negative værdi returneres af strcmp()-funktionen betyder, at den første streng er leksikografisk mindre end den anden streng.

6. Hvordan sammenligner funktionen strcmp() to strenge i C?

Flere år: Strcmp()-funktionen sammenligner ASCII-værdierne for hvert tegn i de to strenge, indtil det ikke-matchende tegn eller NULL-tegn er fundet.

7. Kan strcmp()-funktionen bruges til at sammenligne ikke-strengdatatyper i C?

Flere år: Nej, funktionen strcmp() kan ikke sammenligne ikke-strengdatatyper i C. Den kan kun sammenligne den mutable eller uforanderlige strengdatatype, der afsluttes med et NULL-tegn.

Relaterede artikler:

  • Strygere i C
  • Almindelig anvendte strengfunktioner i C/C++ med eksempler