Struny v C (s príkladmi)

V tomto výučbe sa dozviete o reťazcoch v programovaní v jazyku C. Naučíte sa ich deklarovať, inicializovať a používať ich na rôzne I / O operácie pomocou príkladov.

V programovaní C je reťazec sekvencia znakov ukončená nulovým znakom . Napríklad:

 char c() = "c string"; 

Keď kompilátor zistí postupnosť znakov uzavretých v úvodzovkách, štandardne na koniec pripojí nulový znak .

Ako deklarovať reťazec?

Takto môžete deklarovať reťazce:

 char s(5); 

Tu sme deklarovali reťazec 5 znakov.

Ako inicializovať reťazce?

Reťazce môžete inicializovať rôznymi spôsobmi.

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Zoberme si ďalší príklad:

 char c(5) = "abcde";

Tu sa snažíme priradiť 6 znakov (posledný znak je '') k charpoli s 5 znakmi. To je zlé a nikdy by ste to nemali robiť.

Priradenie hodnôt k reťazcom

Polia a reťazce sú občanmi druhej triedy v C; po vyhlásení operátora priradenia nepodporujú. Napríklad,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Poznámka: Namiesto toho skopírujte reťazec pomocou funkcie strcpy ().

Prečítajte si reťazec od používateľa

Pomocou tejto scanf()funkcie môžete načítať reťazec.

scanf()Funkcia prečíta sekvenciu znakov, kým nenarazí prázdne miesto (medzera, nový riadok, karta, atď.).

Príklad 1: scanf () na čítanie reťazca

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Výkon

 Zadajte meno: Dennis Ritchie Vaše meno je Dennis.

Aj keď bol do vyššie uvedeného programu zadaný Dennis Ritchie, do reťazca mien bol uložený iba „Dennis“. Je to preto, že po Dennisovi bol priestor.

Ako čítať riadok textu?

Pomocou tejto fgets()funkcie môžete prečítať riadok reťazca. Môžete tiež použiť puts()na zobrazenie reťazca.

Príklad 2: fgets () a puts ()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Výkon

 Zadajte meno: Tom Hanks Meno: Tom Hanks 

Tu sme použili fgets()funkciu na načítanie reťazca od používateľa.

fgets(name, sizeof(name), stdlin); // read string

Tieto sizeof(name)výsledky až 30. Preto môžeme mať maximálne 30 znakov ako vstup, ktorý je veľkosť reťazca názvu.

Na tlač reťazca sme použili puts(name);.

Poznámka:gets() funkcia môže byť tiež, aby sa vstup od užívateľa. Je však odstránený z normy C.
Je to preto, lebo gets()vám umožňuje zadať ľubovoľnú dĺžku znakov. Môže teda dôjsť k pretečeniu medzipamäte.

Prenášanie reťazcov do funkcií

Reťazce je možné odovzdať funkcii podobným spôsobom ako polia. Získajte viac informácií o odovzdávaní polí do funkcie.

Príklad 3: Odovzdanie reťazca funkcii

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Struny a ukazovatele

Názvy reťazcov sú podobne ako polia „rozpadnuté“ na ukazovatele. Preto môžete pomocou ukazovateľov manipulovať s prvkami reťazca. Pred kontrolou v tomto príklade sme vám odporúčali skontrolovať pole C a ukazovatele.

Príklad 4: Struny a ukazovatele

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Bežne používané reťazcové funkcie

  • strlen () - počíta dĺžku reťazca
  • strcpy () - skopíruje reťazec do iného
  • strcmp () - porovnáva dva reťazce
  • strcat () - zreťazí dva reťazce

Zaujímavé články...