C strcmp()

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;> }>

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.

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




// 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;> }>

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