I C-språket innehåller rubrikfilen Standard String Library som innehåller några användbara och ofta använda strängmanipuleringsfunktioner. I den här artikeln kommer vi att se hur man jämför strängar i C med hjälp av funktionen strcmp().
Vad är strcmp() i C?
C strcmp() är en inbyggd biblioteksfunktion som används för strängjämförelse. Denna funktion tar två strängar (array av tecken) som argument, jämför dessa två strängar lexikografiskt , och returnerar sedan 0,1 eller -1 som resultat. Det är definierat inuti header-fil med sin prototyp enligt följande:
Syntax för strcmp() i C
strcmp( first_str , second_str );>
Parametrar för strcmp() i C
Denna funktion tar två strängar (array av tecken) som parametrar:
- first_str: Första strängen tas som en pekare till det konstanta tecknet (dvs. oföränderlig sträng). second_str: Den andra strängen tas som en pekare till ett konstant tecken.
Notera: Anledningen till att argument tas som const char * istället för endast char * är att funktionen inte kunde modifiera strängen och även göra dem tillämpliga för konstanta strängar.
Returvärdet för strcmp() i C
Strcmp()-funktionen returnerar tre olika värden efter jämförelsen av de två strängarna som är följande:
1. Noll ( 0 )
Ett värde lika med noll när båda strängarna visar sig vara identiska. Det är, alla tecken i båda strängarna är desamma.
2. Större än noll (> 0 )
Ett värde större än noll returneras när första icke-matchande tecknet i first_str har ett högre ASCII-värde än motsvarande tecken i second_str eller vi kan också säga att om tecknet i first_str är lexikografiskt efter tecknet i second_str, så returneras noll.
3. Mindre än noll ( <0 )
Ett värde mindre än noll returneras när första icke-matchande tecknet i first_str har ett lägre ASCII-värde än motsvarande tecken i second_str . Vi kan också säga att om tecknet i first_str är lexikografiskt före tecknet i second_str, returneras noll.
För att veta mer om ASCII-värden, se den här artikeln – ASCII-tabell
Hur man använder strcmp()-funktionen i C
Följande exempel visar hur man använder 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;> }> |
ramverk för java samlingar
>
>Produktion
First String: Geeks Second String: Geeks Return value of strcmp(): 0>
Hur strcmp() i C fungerar?
C strcmp()-funktionen fungerar genom att jämföra två strängar lexikografiskt . Det betyder att den jämför ASCII-värdet för varje tecken tills det icke-matchande värdet hittas eller NULL-tecknet hittas. Funktionen C strcmp() kan beskrivas på följande sätt:
1. Det börjar med att jämföra ASCII-värdena för de första tecknen i båda strängarna.
2. Om de första tecknen i båda strängarna är lika, kommer den här funktionen att kontrollera det andra tecknet, om de också är lika, kommer den att kontrollera det tredje, och så vidare tills det första omatchade tecknet hittas eller NULL-tecknet hittas.
3. Om en NULL-tecken hittades , funktionen returnerar noll eftersom båda strängarna kommer att vara samma.
4. Om ett tecken som inte matchar hittas,
- Om ASCII-värdet för tecknet i den första strängen är större än det för den andra strängen, då är den positiva skillnaden ( > 0 ) mellan deras ASCII-värden returneras.
- Om ASCII-värdet för tecknet i den första strängen är mindre än det för den andra strängen, då är den negativa skillnaden ( < 0 ) mellan deras ASCII-värden returneras.
Alla dessa tre fall visas i exemplen nedan.
om annat om annat java
Exempel på strcmp() i C
Exempel 1. strcmp() beteende för identiska strängar
Det här programmet illustrerar beteendet för strcmp()-funktionen för identiska strängar.
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;> }> |
>
char till strängjava
>Produktion
Strings are equal Value returned by strcmp() is: 0>
Exempel 2. strcmp() beteende för den lexikografiskt större första strängen
Exemplet nedan visar strcmp()-funktionens beteende för den lexikografiskt större första strängen.
C
// 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>
Exempel 3. strcmp()-beteende för den lexikografiskt mindre första strängen.
Exemplet nedan visar funktionen strcmp() för den lexikografiskt mindre första strängen.
C
// 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;> }> |
listnod i java
>
>Produktion
Strings are unequal Value returned by strcmp() is: -5>
Slutsats
I den här artikeln diskuterade vi C standardbiblioteksfunktion strcmp() som används för att jämföra två strängar lexikografiskt. Standardbiblioteket innehåller några användbara och ofta använda funktioner som gör programmeringen enklare eftersom de hjälper till att undvika att skriva om den vanliga funktionen om och om igen när det behövs.
Vanliga frågor om strcmp() i C
1. Hur kan vi jämföra två strängar i C?
År: Vi kan använda funktionen strcmp() som är definierad i rubrikfilen för att lexikografiskt jämföra två strängar (array av tecken).
2. Vad är funktionsprototypen för strcmp() i C?
År: Funktionsprototypen för strcmp()-funktionen är som följer:
int strcmp(const char* lhs , const char* rhs );>
3. När strcmp()-funktionen returnerar noll?
År: Strcmp()-funktionen returnerar noll när de två strängarna är identiska.
4. Vad betyder det positiva returvärdet av funktionen strcmp()?
År: Strcmp()-funktionen returnerar ett positivt värde när den första strängen är lexikografiskt större än den andra strängen.
5. Vad betyder det negativa returvärdet för strcmp()-funktionen?
År: Det negativa värdet som returneras av strcmp()-funktionen betyder att den första strängen är lexikografiskt mindre än den andra strängen.
6. Hur jämför strcmp()-funktionen två strängar i C?
År: Strcmp()-funktionen jämför ASCII-värdena för varje tecken i de två strängarna tills det icke-matchande tecknet eller NULL-tecknet hittas.
7. Kan strcmp()-funktionen användas för att jämföra icke-strängdatatyper i C?
År: Nej, funktionen strcmp() kan inte jämföra icke-strängdatatyper i C. Den kan bara jämföra den föränderliga eller oföränderliga strängdatatypen som avslutas med ett NULL-tecken.
Relaterade artiklar:
- Stråkar i C
- Vanligt använda strängfunktioner i C/C++ med exempel