Textové řetězce
Textové řetězce jsou v paměti počítače reprezentovány jako sekvence znaků, na jejichž konci je bajt s hondotou nula - tzv „null terminator“, reprezentovaný také jako escape sekvence '\0' .
Pro deklaraci řetězců používáme datový typ pole např char str[]. Pro práci s polem slouží knihovna <string.h>
Deklarace/definice řetězce
Zde je několik příkladů jak lze nadeklarovat a nadefinovat řetězec.
char str1[256]; // Standardní deklarace retězce s maximální délkou 255 znaků + '\0' char str2[256] = "Hello"; // Definice řetezce s obsahem "Hello". const char str3[] = "Hello world!"; // Definice konstantního řetězce
Manipulace s řetezci
Výstup
Pro výspis řetezce nejčastěji používáme funkce puts(), či printf() s formátovacím specifikátorem %s.
char str[256] = "Hello"; puts(str); printf("%s\n", str);
Vstup
Pro vstup používáme nejčastěji funkci fgets(), protože funkce scanf() se specifikátorem %s může být nebezpečná, pokud by zadaný řetězec „přetekl“ velikostí cílové místo.
Funkce fgets() čte text v maximální délce zadané jako parametr (včetně místa pro ukončující bajt), nebo dokud nenarazí na znak konce řádku \n
char str1[256] = {}; char str2[256] = {}; scanf("%s", str1); // Žádný & // alternativně scanf("%255s", str1); // Nejlépe fgets(str2, 256, stdin);
Délka řetězce
Délku řetězce je třeba změřit tak, že spočítáme všechny znaky od začátku až po nulový bajt. Lze to provést například knihovní funkcí strlen(). Pro pozdějsí použití lze tuto hodnotu uložit, ale je třeba ji aktualizovat jakmile se řetězec změní.
Úprava
Pokud chceme modifikovat obsah řetězce, můžeme použít standardní postupy jako s libovolným jiným polem. Pro nejčastější operace jako kopírování řetezců existují funkce v knihovně <string.h>. Je důležité si pečlivě přečíst referenci dané funkce, funkce strcpy() má jako první argument cílový řetězec a duhý je zdrojový.
char str1[]="Sample string"; char str2[40]; strcpy (str2,str1);