logo

C strcmp()

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.

strcmp z zerem jako wartością zwracaną

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.
strcmp z dodatnią wartością zwracaną
  • 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.
strcmp z ujemną wartością zwracaną

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 Javie
Wyjś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