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