Porównywanie długości łańcucha jest powszechną funkcją w programowaniu w C, ponieważ pozwala zobaczyć, który łańcuch zawiera więcej znaków. Jest to bardzo przydatne przy sortowaniu danych. Porównywanie ciągów wymaga specjalnej funkcji; nie używaj != lub ==.
Kroki
Krok 1. Istnieją dwie funkcje, które umożliwiają porównywanie ciągów w C
Obie te funkcje są zawarte w bibliotece.
- strcmp() - ta funkcja porównuje dwa ciągi i zwraca porównawczą różnicę w liczbie znaków.
- strncmp() - to to samo co strcmp(), z wyjątkiem tego, że porównuje pierwsze n znaków. Jest uważany za bezpieczniejszy, ponieważ pomaga zapobiegać awariom przed przepełnieniem.
Krok 2. Uruchom program z niezbędnymi bibliotekami
Będziesz potrzebować zarówno bibliotek i, jak i wszystkich innych, których możesz potrzebować w swoim konkretnym programie.
#włącz #włącz
Krok 3. Rozpocznij
int funkcjonować.
Jest to najłatwiejszy sposób nauczenia się tej funkcji, ponieważ zwróci ona liczbę całkowitą porównującą długość dwóch ciągów.
#include #include int main () { }
Krok 4. Zdefiniuj dwa ciągi, które chcesz porównać
W tym przykładzie porównamy dwa predefiniowane łańcuchy znaków. Będziesz także chciał zdefiniować wartość zwracaną jako liczbę całkowitą.
#include #include int main () { char *str1 = "jabłko"; char *str2 = "pomarańczowy"; int ret; }
Krok 5. Dodaj funkcję porównania
Teraz, gdy masz już zdefiniowane dwa ciągi, możesz dodać funkcję porównania. Zamierzamy użyć strncmp(), więc musimy upewnić się, że liczba znaków do zmierzenia jest ustawiona w funkcji.
#include #include int main () { char *str1 = "jabłko"; char *str2 = "pomarańczowy"; int ret; ret = strncmp(str1, str2, 6); /*Porówna to dwa ciągi o długości do 6 znaków */ }
Krok 6. Użyj
Jeśli inaczej oświadczenie do przeprowadzenia porównania.
Teraz, gdy masz już tę funkcję, możesz użyć instrukcji If…Else, aby wyświetlić, który ciąg jest dłuższy. strncmp() zwróci 0, jeśli łańcuchy są tej samej długości, liczbę dodatnią, jeśli słowo1 jest większe, i liczbę ujemną, jeśli słowo2 jest większe.
#include #include int main () { char *str1 = "jabłko"; char *str2 = "pomarańczowy"; int ret; ret = strncmp(str1, str2, 6); if(ret > 0) { printf("str1 jest dłuższe"); } else if(ret < 0) { printf("str2 jest dłuższe"); } else { printf("Dwa łańcuchy są równe"); } return(0); }