În limbajul C, fișierul antet conține biblioteca standard de șiruri care conține câteva funcții utile și utilizate în mod obișnuit de manipulare a șirurilor. În acest articol, vom vedea cum să comparăm șirurile în C folosind funcția strcmp().
Ce este strcmp() în C?
C strcmp() este o funcție de bibliotecă încorporată care este utilizată pentru compararea șirurilor. Această funcție ia două șiruri (matrice de caractere) ca argumente, compară aceste două șiruri lexicografic , iar apoi returnează 0,1 sau -1 ca rezultat. Este definit în interior fișier antet cu prototipul său, după cum urmează:
Sintaxa strcmp() în C
strcmp( first_str , second_str );>
Parametrii strcmp() în C
Această funcție ia două șiruri (matrice de caractere) ca parametri:
- first_str: primul șir este luat ca un pointer către caracterul constant (adică șir imuabil). second_str: Al doilea șir este luat ca un pointer către un caracter constant.
Notă: Motivul pentru care argumentele sunt luate ca const char * în loc de doar char * este astfel încât funcția să nu modifice șirul și, de asemenea, să le facă aplicabile pentru șiruri constante.
Valoarea returnată a strcmp() în C
Funcția strcmp() returnează trei valori diferite după compararea celor două șiruri care sunt după cum urmează:
1. Zero ( 0 )
O valoare egală cu zero atunci când ambele șiruri sunt găsite a fi identice. Acesta este, toate caracterele din ambele șiruri sunt aceleași.
2. Mai mare decât zero (> 0 )
O valoare mai mare decât zero este returnată atunci când primul caracter care nu se potrivește din first_str are o valoare ASCII mai mare decât caracterul corespunzător din second_str sau mai putem spune că dacă caracterul din first_str este lexicografic după caracterul secund_str, atunci este returnat zero.
3. Mai mică decât zero ( <0 )
O valoare mai mică decât zero este returnată atunci când primul caracter care nu se potrivește din first_str are o valoare ASCII mai mică decât caracterul corespunzător din second_str . De asemenea, putem spune că dacă caracterul din first_str este lexicografic înaintea caracterului secund_str, se returnează zero.
Pentru a afla mai multe despre valorile ASCII, consultați acest articol - Tabel ASCII
Cum se utilizează funcția strcmp() în C
Următorul exemplu demonstrează cum să utilizați funcția strcmp() în 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;> }> |
buclă dactilografiată pentru fiecare
>
>Ieșire
First String: Geeks Second String: Geeks Return value of strcmp(): 0>
Cum funcționează strcmp() în C?
Funcția C strcmp() funcționează prin compararea două șiruri lexicografic . Înseamnă că compară valoarea ASCII a fiecărui caracter până când este găsită valoarea care nu se potrivește sau este găsit caracterul NULL. Funcționarea funcției C strcmp() poate fi descrisă după cum urmează:
1. Se începe cu compararea valorilor ASCII ale primelor caractere ale ambelor șiruri.
2. Dacă primele caractere din ambele șiruri sunt egale, atunci această funcție va verifica al doilea caracter, dacă sunt și egale, atunci va verifica al treilea și așa mai departe până când este găsit primul caracter nepotrivit sau este găsit caracterul NULL.
3. În cazul în care o A fost găsit caracterul NULL , functia returnează zero deoarece ambele șiruri vor fi aceleași.
4. Dacă se găsește un caracter care nu se potrivește,
- Dacă valoarea ASCII a caracterului primului șir este mai mare decât cea a celui de-al doilea șir, atunci diferența pozitivă ( > 0 ) între valorile lor ASCII este returnat.
- Dacă valoarea ASCII a caracterului primului șir este mai mică decât cea a celui de-al doilea șir, atunci diferența negativă ( < 0 ) între valorile lor ASCII este returnat.
Toate aceste trei cazuri sunt demonstrate în exemplele de mai jos.
Exemple de strcmp() în C
Exemplul 1. Comportamentul strcmp() pentru șiruri identice
Acest program ilustrează comportamentul funcției strcmp() pentru șiruri identice.
C
caracteristicile unei serii panda
// 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;> }> |
>
>Ieșire
Strings are equal Value returned by strcmp() is: 0>
Exemplul 2. Comportamentul strcmp() pentru primul șir mai mare din punct de vedere lexicografic
Exemplul de mai jos demonstrează comportamentul funcției strcmp() pentru primul șir mai mare din punct de vedere lexicografic.
arbore binar vs bst
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;> }> |
>
>Ieșire
Strings are unequal Value of result: 19>
Exemplul 3. Comportamentul strcmp() pentru primul șir mai mic din punct de vedere lexicografic.
Exemplul de mai jos demonstrează comportamentul funcției strcmp() pentru primul șir mai mic din punct de vedere lexicografic.
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;> }> |
>
>Ieșire
Strings are unequal Value returned by strcmp() is: -5>
Concluzie
În acest articol, am discutat despre Funcția bibliotecă standard C strcmp() care este folosit pentru a compara două șiruri lexicografic. Biblioteca standard conține câteva funcții utile și utilizate frecvent care fac programarea mai ușoară, deoarece ajută la evitarea rescrierii funcției utilizate în mod obișnuit din nou și din nou atunci când este necesar.
Întrebări frecvente despre strcmp() în C
1. Cum putem compara două șiruri în C?
Ani: Putem folosi funcția strcmp() care este definită în fișierul antet pentru a compara lexicografic două șiruri (matrice de caractere).
2. Care este prototipul funcției strcmp() în C?
Ani: Prototipul funcției al funcției strcmp() este următorul:
int strcmp(const char* lhs , const char* rhs );>
3. Când funcția strcmp() returnează zero?
Ani: Funcția strcmp() returnează zero atunci când cele două șiruri de caractere sunt identice.
if statement java
4. Ce înseamnă valoarea returnată pozitivă a funcției strcmp()?
Ani: Funcția strcmp() returnează o valoare pozitivă atunci când primul șir este mai mare din punct de vedere lexicografic decât al doilea șir.
5. Ce înseamnă valoarea returnată negativă a funcției strcmp()?
Ani: Valoarea negativă returnată de funcția strcmp() înseamnă că primul șir este mai mic din punct de vedere lexicografic decât al doilea șir.
6. Cum compară funcția strcmp() două șiruri în C?
Ani: Funcția strcmp() compară valorile ASCII ale fiecărui caracter din cele două șiruri de caractere până când este găsit caracterul care nu se potrivește sau caracterul NULL.
7. Funcția strcmp() poate fi folosită pentru a compara tipuri de date fără șir în C?
Ani: Nu, funcția strcmp() nu poate compara tipurile de date fără șir în C. Poate compara doar tipul de date șir mutabil sau imuabil care se termină cu un caracter NULL.
Articole similare:
- Coarde în C
- Funcții String utilizate în mod obișnuit în C/C++ cu exemple