![C_68 C program to Compare two Strings | with strcmp() and without strcmp() function](https://i.ytimg.com/vi/la1jAMx_Lzc/hqdefault.jpg)
Obsah
V kóde C je úplne bežné porovnávať dĺžky reťazcov a zistiť, ktorý reťazec obsahuje viac znakov. Je to užitočné pri triedení údajov. Na porovnanie reťazcov je potrebná špeciálna funkcia - nepoužívajte != alebo ==.
Kroky
1 Programovací jazyk C obsahuje dve funkcie, ktoré môžete použiť na porovnanie dĺžok reťazcov. Obe tieto funkcie sú zahrnuté v knižnici string.h>.
- strcmp () - táto funkcia porovná dva reťazce a vráti rozdiel v počte znakov.
- strncmp () - táto funkcia je rovnaká ako strcmp () okrem toho prvého n postavy. Považuje sa za bezpečnejší, pretože zabraňuje poruchám pri pretečení.
2 Spustite program s požadovanými knižnicami. Budete potrebovať knižnice stdio.h> a string.h>ako aj všetky ostatné knižnice požadované pre váš konkrétny program.
#include stdio.h> #include string.h>
3 Zadajte funkciu int. Vráti celé číslo ako výsledok porovnania dĺžky dvoch reťazcov.
#include stdio.h> #include string.h> int main () {}
4 Identifikujte dva reťazce, ktoré chcete porovnať. V našom prípade porovnajme dva reťazce typu char... Návratovú hodnotu definujte aj ako celé číslo.
#include stdio.h> #include string.h> int main () {char * str1 = "apple"; char * str2 = "oranžová"; int ret; }
5 Zadajte porovnávaciu funkciu. V našom prípade použijeme funkciu strncmp ()... V ňom musíte nastaviť počet meraných znakov.
#include stdio.h> #include string.h> int main () {char * str1 = "apple"; char * str2 = "oranžová"; int ret; ret = strncmp (str1, str2, 8); / * Porovnáva dva reťazce dlhé až 8 znakov * /}
6 Zadajte podmienené vyhlásenie Ak... Inak. Je potrebné ukázať, ktorý riadok je dlhší. Funkcia strncmp () vráti číslo 0ak sú dĺžky reťazcov rovnaké, kladné číslo, ak je str1 dlhší, a záporné číslo, ak je str2 dlhší.
#include stdio.h> #include string.h> int main () {char * str1 = "apple"; char * str2 = "oranžová"; int ret; ret = strncmp (str1, str2, 8); if (ret> 0) {printf ("str1 je dlhsi"); } else if (ret 0) {printf ("str2 je dlhsi"); } else {printf ("Dlžky riadkov sú rovnaké"); } návrat (0); }
Varovania
- Nezabudnite, že ak sú dĺžky reťazcov rovnaké, vráti sa hodnota 0. To môže byť mätúce, pretože 0 je tiež NEPRAVDA.