Řetězce v C (s příklady)

V tomto kurzu se dozvíte o řetězcích v programování C. Naučíte se je deklarovat, inicializovat a používat je pro různé I / O operace pomocí příkladů.

V programování C je řetězec posloupnost znaků zakončená nulovým znakem . Například:

 char c() = "c string"; 

Když kompilátor narazí na posloupnost znaků uzavřených v uvozovkách, ve výchozím nastavení připojí prázdný znak na konec.

Jak deklarovat řetězec?

Takto můžete deklarovat řetězce:

 char s(5); 

Zde jsme deklarovali řetězec 5 znaků.

Jak inicializovat řetězce?

Řetězce můžete inicializovat mnoha způsoby.

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

Vezměme si další příklad:

 char c(5) = "abcde";

Zde se snažíme přiřadit 6 znaků (poslední znak je '') k charpoli, které má 5 znaků. To je špatné a nikdy byste to neměli dělat.

Přiřazení hodnot řetězcům

Pole a řetězce jsou občané druhé třídy v C; nepodporují operátora přiřazení, jakmile je deklarován. Například,

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

Poznámka: Místo toho zkopírujte řetězec pomocí funkce strcpy ().

Přečtěte si řetězec od uživatele

Tuto funkci můžete použít scanf()ke čtení řetězce.

scanf()Funkce přečte sekvenci znaků, dokud nenarazí prázdné místo (mezera, nový řádek, karta, atd.).

Příklad 1: scanf () pro čtení řetězce

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

Výstup

 Zadejte jméno: Dennis Ritchie Vaše jméno je Dennis.

Přestože byl do výše uvedeného programu zapsán Dennis Ritchie, do řetězce jmen byl uložen pouze „Dennis“. Je to proto, že po Dennisovi byl prostor.

Jak číst řádek textu?

Tuto funkci můžete použít fgets()ke čtení řádku řetězce. Můžete také použít puts()k zobrazení řetězce.

Pří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ýstup

 Zadejte jméno: Tom Hanks Jméno: Tom Hanks 

Zde jsme použili fgets()funkci ke čtení řetězce od uživatele.

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

Tyto sizeof(name)výsledky až 30. Tudíž můžeme mít maximálně 30 znaků jako vstup, který je velikost řetězce názvu.

K tisku řetězce jsme použili puts(name);.

Poznámka:gets() funkce může být také, aby se vstup od uživatele. Je však odstraněn ze standardu C.
Je to proto, že gets()vám umožňuje zadat libovolnou délku znaků. Proto může dojít k přetečení vyrovnávací paměti.

Předávání řetězců funkcím

Řetězce lze předat funkci podobným způsobem jako pole. Další informace o předávání polí funkci.

Příklad 3: Předání řetězce funkci

 #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 ukazatele

Podobně jako pole jsou názvy řetězců „rozloženy“ na ukazatele. Proto můžete použít ukazatele k manipulaci s prvky řetězce. Doporučujeme vám zkontrolovat C pole a ukazatele, než zkontrolujete tento příklad.

Příklad 4: Řetězce a ukazatele

 #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 )

Běžně používané řetězcové funkce

  • strlen () - vypočítá délku řetězce
  • strcpy () - zkopíruje řetězec do jiného
  • strcmp () - porovná dva řetězce
  • strcat () - zřetězí dva řetězce

Zajímavé články...