In de C-taal bevat het headerbestand de Standard String Library die enkele nuttige en veelgebruikte functies voor tekenreeksmanipulatie bevat. In dit artikel zullen we zien hoe je strings in C kunt vergelijken met behulp van de functie strcmp().
Wat is strcmp() in C?
C strcmp() is een ingebouwde bibliotheekfunctie die wordt gebruikt voor tekenreeksvergelijking. Deze functie heeft twee strings (array van karakters) als argumenten, vergelijkt deze twee strings lexicografisch en retourneert vervolgens 0,1 of -1 als resultaat. Het is van binnen gedefinieerd header-bestand met het prototype als volgt:
Syntaxis van strcmp() in C
strcmp( first_str , second_str );>
Parameters van strcmp() in C
Deze functie heeft twee tekenreeksen (reeks tekens) als parameters:
- first_str: De eerste string wordt genomen als een verwijzing naar het constante teken (d.w.z. onveranderlijke string). second_str: Tweede string wordt genomen als verwijzing naar een constant karakter.
Opmerking: De reden dat argumenten worden opgevat als const char * in plaats van alleen char * is dat de functie de tekenreeks niet kan wijzigen en deze ook toepasbaar kan maken voor constante tekenreeksen.
Retourwaarde van strcmp() in C
De functie strcmp() retourneert drie verschillende waarden na de vergelijking van de twee tekenreeksen, die als volgt zijn:
1. Nul ( 0 )
Een waarde gelijk aan nul wanneer beide strings identiek blijken te zijn. Dat is, alle tekens in beide strings zijn hetzelfde.
2. Groter dan nul (> 0 )
Een waarde groter dan nul wordt geretourneerd wanneer de het eerste niet-overeenkomende teken in first_str heeft een grotere ASCII-waarde dan het overeenkomstige teken in second_str of we kunnen ook zeggen dat als het teken in eerste_str lexicografisch na het teken van tweede_str staat, nul wordt geretourneerd.
3. Kleiner dan nul ( <0 )
Er wordt een waarde kleiner dan nul geretourneerd als de het eerste niet-overeenkomende teken in first_str heeft een lagere ASCII-waarde dan het overeenkomstige teken in second_str . We kunnen ook zeggen dat als het teken in eerste_str lexicografisch vóór het teken van tweede_str staat, nul wordt geretourneerd.
Raadpleeg dit artikel voor meer informatie over ASCII-waarden: ASCII-tabel
Hoe de strcmp()-functie in C te gebruiken
Het volgende voorbeeld laat zien hoe u de functie strcmp() in C gebruikt:
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;> }> |
1 van 1000
>
>Uitvoer
converteer datum naar string
First String: Geeks Second String: Geeks Return value of strcmp(): 0>
Hoe strcmp() in C werkt?
De functie C strcmp() werkt door het vergelijken van de lexicografisch twee strings . Het betekent dat het de ASCII-waarde van elk teken vergelijkt totdat de niet-overeenkomende waarde wordt gevonden of het NULL-teken wordt gevonden. De werking van de functie C strcmp() kan als volgt worden beschreven:
1. Het begint met het vergelijken van de ASCII-waarden van de eerste tekens van beide strings.
2. Als de eerste tekens in beide strings gelijk zijn, controleert deze functie het tweede teken. Als ze ook gelijk zijn, controleert het het derde, enzovoort totdat het eerste niet-overeenkomende teken wordt gevonden of het NULL-teken wordt gevonden.
3. Als een NULL-teken gevonden , de functie retourneert nul omdat beide snaren hetzelfde zullen zijn.
4. Als er een niet-overeenkomend teken wordt gevonden,
- Als de ASCII-waarde van het teken van de eerste string groter is dan die van de tweede string, dan is het positieve verschil ( > 0 ) tussen hun ASCII-waarden wordt geretourneerd.
- Als de ASCII-waarde van het teken van de eerste string kleiner is dan die van de tweede string, dan is het negatieve verschil ( < 0 ) tussen hun ASCII-waarden wordt geretourneerd.
Al deze drie gevallen worden gedemonstreerd in de onderstaande voorbeelden.
Voorbeelden van strcmp() in C
Voorbeeld 1. strcmp()-gedrag voor identieke tekenreeksen
Dit programma illustreert het gedrag van de strcmp()-functie voor identieke tekenreeksen.
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;> }> |
>
>Uitvoer
Strings are equal Value returned by strcmp() is: 0>
Voorbeeld 2. strcmp()-gedrag voor de lexicografisch grotere eerste tekenreeks
Het onderstaande voorbeeld demonstreert het gedrag van de functie strcmp() voor de lexicografisch grotere eerste tekenreeks.
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;> }> |
>
>Uitvoer
tekstgrootte latex
Strings are unequal Value of result: 19>
Voorbeeld 3. strcmp()-gedrag voor de lexicografisch kleinere eerste string.
Het onderstaande voorbeeld demonstreert het gedrag van de functie strcmp() voor de lexicografisch kleinere eerste tekenreeks.
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;> }> |
>
>Uitvoer
Strings are unequal Value returned by strcmp() is: -5>
Conclusie
In dit artikel bespraken we de C standaardbibliotheekfunctie strcmp() die wordt gebruikt om twee strings lexicografisch te vergelijken. De standaardbibliotheek bevat een aantal nuttige en veelgebruikte functies die het programmeren eenvoudiger maken, omdat ze voorkomen dat de veelgebruikte functie steeds opnieuw moet worden geschreven als dat nodig is.
Veelgestelde vragen over strcmp() in C
1. Hoe kunnen we twee strings in C vergelijken?
Jaren: We kunnen de functie strcmp() gebruiken die in het headerbestand is gedefinieerd om twee strings (reeks tekens) lexicografisch te vergelijken.
2. Wat is het functieprototype van strcmp() in C?
Jaren: Het functieprototype van de strcmp()-functie is als volgt:
centos versus roodhoed
int strcmp(const char* lhs , const char* rhs );>
3. Wanneer de functie strcmp() nul retourneert?
Jaren: De functie strcmp() retourneert nul als de twee tekenreeksen identiek zijn.
4. Wat betekent de positieve retourwaarde van de functie strcmp()?
Jaren: De functie strcmp() retourneert een positieve waarde wanneer de eerste tekenreeks lexicografisch groter is dan de tweede tekenreeks.
5. Wat betekent de negatieve retourwaarde van de functie strcmp()?
Jaren: De negatieve waarde die door de functie strcmp() wordt geretourneerd, betekent dat de eerste string lexicografisch kleiner is dan de tweede string.
6. Hoe vergelijkt de functie strcmp() twee strings in C?
Jaren: De functie strcmp() vergelijkt de ASCII-waarden van elk teken van de twee tekenreeksen totdat het niet-overeenkomende teken of NULL-teken wordt gevonden.
7. Kan de functie strcmp() worden gebruikt om niet-stringgegevenstypen in C te vergelijken?
Jaren: Nee, de functie strcmp() kan niet-stringgegevenstypen in C niet vergelijken. Het kan alleen het veranderlijke of onveranderlijke tekenreeksgegevenstype vergelijken dat eindigt met een NULL-teken.
Gerelateerde artikelen:
- Snaren in C
- Veelgebruikte String-functies in C/C++ met voorbeelden