Mi az a vonósor?
A karakterlánc karaktergyűjtemény, a karakterlánc tömbje karakterek tömbje. Minden karakterlánc null karakterrel fejeződik be. A karakterlánc tömbje a kétdimenziós tömbök egyik leggyakoribb alkalmazása.
A scanf () a bemeneti függvény% s formátum-specifikátorral, hogy a karakterláncot a terminál bemeneteként olvassa le. De a hátránya, hogy megszűnik, amint találkozik a térrel. Ennek elkerülése érdekében a () függvény eléri a tetszőleges számú karakterláncot, beleértve a szóközöket is.
A Sting karakterek tömbje, amely null karakterként ismert speciális karakterrel zárul („\ 0”).
Szintaxis
datatype name_of_the_array(size_of_elements_in_array);
char str_name(size);
Példa
datatype name_of_the_array ( ) = ( Elements of array );
char str_name(8) = “Strings”;
A Str_name a karakterlánc neve, és a méret határozza meg a karakterlánc hosszát (karakterek száma).
Egy karakterlánc definiálható egydimenziós karakterek tömbjeként, tehát a karakterláncok tömbje kétdimenziós karakterek tömbje.
Szintaxis
char str_name(size)(max);
Szintaxis
char str_arr(2)(6) = ( ('g', 'o', 'u', 'r', 'i', '\0'), ('r', ' a', ' m', '\0'));
Alternatív megoldásként azt is kijelenthetjük
Szintaxis
char str_arr(2)(6) =(“gouri”, ”ram”);
A megadott szintaxisból két alindex található, amelyek közül az első hány deklarálandó karakterláncot tartalmaz, a második pedig az, hogy mekkora karaktert tudjon tárolni az egyes karakterláncok, beleértve a null karaktereket is. A C koncepció már elmagyarázza, hogy minden karakter 1 bájtnyi adatot vesz fel a memória elosztása közben, a fenti szintaxispélda 2 * 6 = 12 bájt memóriát foglal el.
Példa
char str_name(8) = ('s', 't', 'r', 'i', 'n', 'g', 's', '\0');
By the rule of initialization of array, the above declaration can be written as
char str_name() = “Strings”;
0 1 2 3 4 5 6 7 Index
Változók 2000 2001 2002 2003 2004 2005 2006 2007 2007 Cím
Ez azt szemlélteti, hogy a karakterláncokat hogyan osztják el a memóriában a fenti C-ben megadott karakterlánchoz.
A karakterlánc minden karakteréhez tartozik egy index és cím a karakterlánc minden karakteréhez. A fenti ábrázolásban a null karaktert („\ 0”) a C fordító automatikusan behelyezi minden karakterlánc végére, amikor a fent deklarált tömböt inicializálja. Általában a karakterláncokat dupla idézőjelekkel deklarálják a karakterláncok inicializálásának szabályai szerint, és amikor a fordító dupla idézőjelekkel találkozik, akkor automatikusan null karaktert ad a karakterlánc végére.
A fenti példa alapján, mivel tudjuk, hogy a tömb neve a 0. indexre és a 2000. címre mutat, mivel már tudjuk, hogy a tömb indexálása 0-tól kezdődik. Ezért
str_name + 0 points to the character “s”
str_name + 1 points to the character “t”
Mivel a fenti példa egydimenziós tömbre vonatkozik, így a mutató a karakterlánc minden karakterére mutat.
Példák a tömb karakterláncára C-ben
#include
int main()
(
char name(10);
printf("Enter the name: ");
fgets(name, sizeof(name), stdin);
printf("Name is : ");
puts(name);
return 0;
)
A kétdimenziós tömbök esetében a következő szintaxis és memóriaelosztás áll rendelkezésre. Ehhez sor és oszlop ábrázolásként (táblázat formátum) vehetjük fel.
char str_name(size)(max);
A táblázat ábrázolásában minden sor (első alindex) a tárolni kívánt húrok számát határozza meg, az oszlop (második alindex) pedig a karakterláncok maximális hosszát.
char str_arr(2)(6) = ( ('g', 'o', 'u', 'r', 'i', '\0'), ('r', ' a', ' m', '\0'));
Alternatív megoldásként azt is kijelenthetjük
Szintaxis:
char str_arr(2)(8) =(“gouri”, ”ram”);
Index sorok | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
0 | g | o | u | r | én | \ 0 | \ 0 | \ 0 |
1 | r | egy | m | \ 0 | \ 0 | \ 0 | \ 0 | \ 0 |
A fenti példából tudjuk, hogy a tömb neve a 0. karakterláncra mutat. Ebből adódóan,
str_name + 0 pont a 0. „guri” karakterláncra
str_name + 1 pont az első „ram” karakterláncra
Mivel a fenti példa kétdimenziós tömbökre vonatkozik, így a mutató a tömb minden húrjára mutat.
#include
int main()
(
int i;
char name(2)(8) = (
“gouri”,
“ram”
);
for (i = 0; i < 2; i++)
(
printf(“String = %s \n”, name + i, name + i);
)
return 0;
)
Kimenet:
A húrok funkciói
strcpy (S1, S2); ez a funkció az s2 karakterláncot másolja az s1 sztrájkba.char s1(10) = “gouri”;
char s2 (10) = “ram”;
char s3 (10) ;
strcpy(s3, s2);
result => strcpy(s3, s2) : ram
strcat (S1, S2); ez a függvény összekapcsolja az s1 és s2 karakterláncokat, az s2 karakterláncot az s1 karakterlánc végéhez csatoljuk.char s1(10) = “gouri”;
char s2 (10) = “ram”;
strcat(s1, s2);
result => strcat(s1, s2) : gouriram
strlen (s1); ez a függvény az s1 karakterlánc hosszát adja vissza.char s1(10) = “gouri”;
strlen(s1);
result => 5
strcmp (S1, S2); Ez a funkció összehasonlítja mind az s1, mind az s2 karakterláncokat.style="list-style-type: none;">
style="list-style-type: none;">
strchr (s1, ch); ezek a függvények az adott ch karakter első előfordulását az s1 karakterláncban találják meg, és a mutató erre a karakterre mutat a karakterláncban.
strstr (S1, S2); ez megtalálja az s2 karakterlánc első előfordulását az s1 karakterláncban, és a mutató az s1 karakterlánc s2 karakterláncára mutat.
Néhány érvénytelen művelettel: str_arr (0) = “gouri”; ebben a műveletben a karakterlánc mutatója az állandó mutatóhoz van hozzárendelve, amely érvénytelen és nem lehetséges, mivel a tömb neve állandó mutató.
Ennek elkerülése érdekében az str_arr hozzárendelhető az strcpy használatával (str_arr (0), „gouri”).
Következtetés
Maga a tömb sztringek listájaként határozható meg. A fenti bevezetésből azt a következtetést vonhatjuk le, hogy a karakterláncok deklarálása és inicializálása különbözik, mivel minden egyes karakterláncra láttuk, hogy a fordító null karaktert fűz hozzá, amikor a karakterláncot beolvassa. Sok karakterlánckezelő funkció van, néhány funkciót példákkal magyarázunk fent. Ezért a karakterlánc tömbjei ugyanolyan egyszerűek, mint a tömbök.
Ajánlott cikkek
Ez egy útmutató a húrok tömbjéhez C.-ban. Itt tárgyaljuk a tömbhúrok alapjait, példaként a tömbhurkokat C-ben és a húrok funkcióit. A további javasolt cikkeken keresztül további információkat is megtudhat -
- Karakterlánc tömb C # -ben
- Többdimenziós tömb C-ben
- Tömbök a C programozásban
- 2D tömbök a C # -ben
- Hogyan működik a tömb az Unix-ban a szintaxissal?