Porovnání délky řetězce je běžnou funkcí v programování v jazyce C, protože vám umožňuje zjistit, který řetězec obsahuje více znaků. To je velmi užitečné pro třídění dat. Porovnání řetězců vyžaduje speciální funkci; nepoužívejte! = nebo ==.
Kroky
Krok 1. Existují dvě funkce, které vám umožňují porovnat řetězce v C
Obě tyto funkce jsou součástí knihovny.
- strcmp () - Tato funkce porovnává dva řetězce a vrací srovnávací rozdíl v počtu znaků.
- strncmp () - Toto je stejné jako strcmp (), kromě toho, že porovnává prvních n znaků. Je považován za bezpečnější, protože pomáhá předcházet přetečení.
Krok 2. Spusťte program s potřebnými knihovnami
Budete chtít knihovny i a další, které pro svůj konkrétní program budete potřebovat.
#include #include
Krok 3. Spusťte
int funkce.
Toto je nejjednodušší způsob, jak se tuto funkci naučit, protože vrátí celé číslo, které porovnává délku dvou řetězců.
#include #include int main () {}
Krok 4. Definujte dva řetězce, které chcete porovnat
V tomto příkladu budeme porovnávat dva předdefinované řetězce znaků. Také budete chtít definovat návratovou hodnotu jako celé číslo.
#include #include int main () {char *str1 = "apple"; char *str2 = "oranžová"; int ret; }
Krok 5. Přidejte funkci porovnání
Nyní, když máte definovány dva řetězce, můžete přidat funkci porovnání. Budeme používat strncmp (), takže musíme zajistit, aby byl ve funkci nastaven počet měřených znaků.
#include #include int main () {char *str1 = "apple"; char *str2 = "oranžová"; int ret; ret = strncmp (str1, str2, 6); / *Tím se porovnají dva řetězce dlouhé až 6 znaků */}
Krok 6. Použijte
Pokud … Jinak příkaz k provedení srovnání.
Nyní, když máte funkci zavedenou, můžete pomocí příkazu If… Else zobrazit, který řetězec je delší. strncmp () vrátí 0, pokud mají řetězce stejnou délku, kladné číslo, pokud je str1 větší, a záporné číslo, pokud je str2 větší.
#include #include int main () {char *str1 = "apple"; char *str2 = "oranžová"; int ret; ret = strncmp (str1, str2, 6); if (ret> 0) {printf ("str1 is longer"); } else if (ret <0) {printf ("str2 je delší"); } else {printf ("Dva řetězce jsou si rovny"); } return (0); }