W języku C plik nagłówkowy zawiera standardową bibliotekę ciągów, która zawiera przydatne i często używane funkcje manipulacji ciągami. W tym artykule zobaczymy, jak porównać ciągi w języku C za pomocą funkcji strcmp().
Co to jest strcmp() w C?
C strcmp() to wbudowana funkcja biblioteczna używana do porównywania ciągów. Ta funkcja przyjmuje jako argumenty dwa ciągi znaków (tablicę znaków), porównuje te dwa ciągi leksykograficzne , a następnie zwraca jako wynik 0,1 lub -1. Jest to określone wewnątrz plik nagłówkowy z jego prototypem w następujący sposób:
Składnia strcmp() w C
strcmp( first_str , second_str );>
Parametry strcmp() w C
Ta funkcja przyjmuje dwa ciągi znaków (tablicę znaków) jako parametry:
- First_str: Pierwszy ciąg znaków jest traktowany jako wskaźnik do znaku stałego (tj. ciągu niezmiennego). second_str: Drugi ciąg znaków jest traktowany jako wskaźnik do znaku stałego.
Notatka: Powodem, dla którego argumenty są przyjmowane jako const char * zamiast tylko char *, jest to, że funkcja nie może zmodyfikować ciągu znaków, a także sprawić, że będą one miały zastosowanie do ciągów stałych.
Zwracana wartość strcmp() w C
Funkcja strcmp() po porównaniu dwóch ciągów zwraca trzy różne wartości, które są następujące:
1. Zero ( 0 )
Wartość równa zero, jeśli oba ciągi znaków są identyczne. To jest, wszystkie znaki w obu ciągach są takie same.
2. Większe niż zero (> 0 )
Wartość większa od zera jest zwracana, gdy pierwszy niepasujący znak w First_str ma większą wartość ASCII niż odpowiedni znak w second_str lub możemy również powiedzieć, że jeśli znak w pierwszej_str jest leksykograficznie następujący po znaku drugiej_str, to zwracane jest zero.
3. Mniejsze od zera ( <0 )
Wartość mniejsza od zera jest zwracana, gdy pierwszy niepasujący znak w First_str ma mniejszą wartość ASCII niż odpowiedni znak w second_str . Można również powiedzieć, że jeśli znak w pierwszej_str znajduje się leksykograficznie przed znakiem drugiej_str, zwracane jest zero.
Aby dowiedzieć się więcej o wartościach ASCII, zapoznaj się z tym artykułem – Tabela ASCII
Jak korzystać z funkcji strcmp() w C
Poniższy przykład ilustruje sposób użycia funkcji strcmp() w 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;> }> |
ciąg znaków Java Indexof
>
>Wyjście
First String: Geeks Second String: Geeks Return value of strcmp(): 0>
Jak działa strcmp() w C?
Funkcja C strcmp() działa poprzez porównanie dwa ciągi leksykograficzne . Oznacza to, że porównuje wartość ASCII każdego znaku, aż do znalezienia niepasującej wartości lub znalezienia znaku NULL. Działanie funkcji strcmp() w języku C można opisać w następujący sposób:
1. Rozpoczyna się od porównania wartości ASCII pierwszych znaków obu ciągów.
2. Jeśli pierwsze znaki w obu ciągach są równe, funkcja sprawdzi drugi znak, jeśli są również równe, sprawdzi trzeci i tak dalej, aż do znalezienia pierwszego niedopasowanego znaku lub znalezienia znaku NULL.
ciąg.wartość Java
3. Jeśli Znaleziono znak NULL , funkcja zwraca zero ponieważ oba ciągi będą takie same.

4. Jeśli zostanie znaleziony niepasujący znak,
- Jeżeli wartość ASCII znaku pierwszego ciągu jest większa niż wartość drugiego ciągu, wówczas dodatnia różnica ( > 0 ) pomiędzy ich wartościami ASCII.

- Jeżeli wartość ASCII znaku pierwszego ciągu jest mniejsza niż wartość drugiego ciągu, wówczas różnica ujemna ( < 0 ) pomiędzy ich wartościami ASCII.

Wszystkie te trzy przypadki przedstawiono w poniższych przykładach.
Przykłady strcmp() w C
Przykład 1. Zachowanie strcmp() dla identycznych ciągów
Ten program ilustruje zachowanie funkcji strcmp() dla identycznych ciągów znaków.
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;> }> |
>
>Wyjście
Strings are equal Value returned by strcmp() is: 0>
Przykład 2. Zachowanie strcmp() dla pierwszego ciągu znaków o większym leksykografii
Poniższy przykład ilustruje zachowanie funkcji strcmp() dla pierwszego ciągu znaków o większym leksykograficznym znaczeniu.
C
matematyka losowa Java
// 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;> }> |
>
>Wyjście
Strings are unequal Value of result: 19>
Przykład 3. Zachowanie strcmp() dla pierwszego łańcucha leksykograficznie mniejszego.
Poniższy przykład ilustruje zachowanie funkcji strcmp() dla pierwszego ciągu znaków mniejszego leksykograficznie.
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;> }> |
>
>
referencyjne typy danych w JavieWyjście
Strings are unequal Value returned by strcmp() is: -5>
Wniosek
W tym artykule omówiliśmy Funkcja standardowej biblioteki C strcmp() który służy do porównania leksykograficznego dwóch ciągów znaków. Biblioteka standardowa zawiera kilka przydatnych i często używanych funkcji, które ułatwiają programowanie, ponieważ pomagają uniknąć wielokrotnego przepisywania często używanych funkcji, gdy zajdzie taka potrzeba.
Często zadawane pytania dotyczące strcmp() w C
1. Jak możemy porównać dwa ciągi znaków w C?
Lata: Możemy użyć funkcji strcmp(), która jest zdefiniowana w pliku nagłówkowym, aby leksykograficznie porównać dwa ciągi znaków (tablicę znaków).
2. Jaki jest prototyp funkcji strcmp() w C?
Lata: Prototyp funkcji strcmp() jest następujący:
int strcmp(const char* lhs , const char* rhs );>
3. Kiedy funkcja strcmp() zwraca zero?
Lata: Funkcja strcmp() zwraca zero, jeśli dwa ciągi są identyczne.
4. Co oznacza dodatnia wartość zwracana przez funkcję strcmp()?
Lata: Funkcja strcmp() zwraca wartość dodatnią, gdy pierwszy ciąg znaków jest leksykograficznie większy od drugiego.
5. Co oznacza ujemna wartość zwracana przez funkcję strcmp()?
Lata: Wartość ujemna zwrócona przez funkcję strcmp() oznacza, że pierwszy ciąg znaków jest leksykograficznie mniejszy od drugiego.
6. W jaki sposób funkcja strcmp() porównuje dwa ciągi znaków w C?
Lata: Funkcja strcmp() porównuje wartości ASCII każdego znaku dwóch łańcuchów, aż do znalezienia niepasującego znaku lub znaku NULL.
7. Czy można użyć funkcji strcmp() do porównania typów danych innych niż string w C?
Lata: Nie, funkcja strcmp() nie może porównywać typów danych innych niż ciąg w C. Może porównywać jedynie zmienny lub niezmienny typ danych łańcuchowych zakończony znakiem NULL.
Powiązane artykuły:
- Struny w C
- Często używane funkcje String w C/C++ z przykładami