![stat243-fall-2014 Class 13](https://i.ytimg.com/vi/gAx2JZQFF9k/hqdefault.jpg)
Zawartość
W kodzie C dość często porównuje się długości ciągów, aby dowiedzieć się, który ciąg zawiera więcej znaków. Jest to przydatne do sortowania danych. Do porównania ciągów potrzebna jest specjalna funkcja - nie używaj != lub ==.
Kroki
1 Język programowania C zawiera dwie funkcje, których można użyć do porównywania długości ciągów. Obie te funkcje są zawarte w bibliotece ciąg.h>.
- strcmp () - ta funkcja porównuje dwa ciągi i zwraca różnicę w liczbie znaków.
- strncmp () - ta funkcja jest taka sama jak strcmp () z wyjątkiem tego, że pierwszy n postacie. Jest uważany za bezpieczniejszy, ponieważ zapobiega awariom przepełnienia.
2 Uruchom program z wymaganymi bibliotekami. Będziesz potrzebować bibliotek stdio.h> oraz ciąg.h>jak również wszelkie inne biblioteki wymagane dla konkretnego programu.
#include stdio.h> #include string.h>
3 Wprowadź funkcję int. Zwraca liczbę całkowitą w wyniku porównania długości dwóch ciągów.
#include stdio.h> #include string.h> int main () {}
4 Zidentyfikuj dwa ciągi, które chcesz porównać. W naszym przykładzie porównajmy dwa ciągi typu zwęglać... Zdefiniuj również wartość zwracaną jako liczbę całkowitą.
#include stdio.h> #include string.h> int main () {char * str1 = "jabłko"; char * str2 = "pomarańczowy"; int ret; }
5 Wprowadź funkcję porównania. W naszym przykładzie użyjemy funkcji strncmp ()... W nim musisz ustawić liczbę mierzonych znaków.
#include stdio.h> #include string.h> int main () {char * str1 = "jabłko"; char * str2 = "pomarańczowy"; int ret; ret = strncmp (str1, str2, 8); / * Porównuje dwa ciągi o długości do 8 znaków * /}
6 Wpisz oświadczenie warunkowe Jeśli... W przeciwnym razie. Potrzebne jest pokazanie, która linia jest dłuższa. Funkcjonować strncmp () zwróci numer 0jeśli długości łańcuchów są takie same, liczba dodatnia, jeśli słowo1 jest dłuższe, a liczba ujemna, jeśli słowo2 jest dłuższe.
#include stdio.h> #include string.h> int main () {char * str1 = "jabłko"; char * str2 = "pomarańczowy"; int ret; ret = strncmp (str1, str2, 8); if (ret> 0) {printf ("str1 jest dłuższe"); } else if (ret 0) {printf ("str2 jest dłuższe"); } else {printf ("Długości linii są równe"); } powrót (0); }
Ostrzeżenia
- Pamiętaj, że jeśli długości ciągów są równe, zostanie zwrócona wartość 0. Może to być mylące, ponieważ 0 jest również FAŁSZEM.