Mi a karakterlánc C-ben?
A C karakterlánc nem más, mint egy lineáris sorrendben szereplő karakterek gyűjteménye. A „C” mindig egyetlen adatot kezel egy karakterláncnak, bár szóközöket tartalmaz. Egyetlen karaktert egyetlen idézet ábrázolással határozhatunk meg. A karakterlánc kettős idézőjel segítségével jelenik meg.
Example, "Welcome to the world of programming!"
A 'C' a
Ebben az oktatóanyagban megtanulja-
- Hogyan lehet deklarálni és inicializálni a karakterláncot C-ben
- Karakterlánc bemenet: Olvasd el a karakterláncot
- Karakterlánc-kimenet: Karakterlánc nyomtatása / megjelenítése
- fputs () függvény
- funkciót tesz
- A húrkönyvtár
- Karakterlánc konvertálása számgá
Hogyan lehet deklarálni és inicializálni a karakterláncot C-ben
Az AC String egy egyszerű tömb, amelynek adattípusa a char. A „C” nyelv nem támogatja közvetlenül a karakterláncot mint adattípust. Ezért egy String C-ben való megjelenítéséhez használnia kell egy karaktertömböt.
A változó karakterláncként történő deklarálásának általános szintaxisa a következő:
char string_variable_name [array_size];
A húrok klasszikus deklarációja az alábbiak szerint hajtható végre:
char string_name[string_length] = "string";
A tömb méretét meg kell határozni egy C karakterlánc változó deklarálása közben, mert arra használják, hogy kiszámítsák, hány karaktert kell tárolni a C karakterlánc változóban. Néhány érvényes példa a karakterlánc deklarációra a következő,
char first_name[15]; //declaration of a string variablechar last_name[15];
A fenti példa egy karakterláncváltozót ábrázol, amelynek tömbmérete 15. Ez azt jelenti, hogy az adott C karakterlánctömb legfeljebb 15 karakter befogadására képes. A tömb indexelése 0-tól kezdődik, ezért 0–14 pozícióból tárolja a karaktereket. A C fordító automatikusan hozzáad egy NULL '\ 0' karaktert a létrehozott karaktertömbhöz.
Vizsgáljuk meg a karakterlánc inicializálását C-ben. A következő példa bemutatja a karakterláncok inicializálását C-ben,
char first_name[15] = "ANTHONY";char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declarationchar string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/
A string3-ban a NULL karaktert kifejezetten hozzá kell adni, és a karaktereket egyetlen idézőjelbe kell foglalni.
A „C” lehetővé teszi számunkra a karakterlánc-változó inicializálását anélkül, hogy meghatároznánk a karaktertömb méretét. Meg lehet tenni a következő módon,
char first_name[ ] = "NATHAN";
A C karakterláncok neve mutatóként működik, mert alapvetően tömb.
Karakterlánc bemenet: Olvasd el a karakterláncot
Amikor olyan interaktív programokat ír, amelyek a felhasználótól kérik a bevitelt, C biztosítja a scanf (), a get () és a fgets () függvényeket, hogy megtalálja a felhasználótól beírt szövegsort.
Amikor a scanf () használatával olvassuk be, akkor a "% s" formátummeghatározót használjuk anélkül, hogy a "&" szót használnánk a változó címéhez való hozzáféréshez, mert egy tömb neve mutatóként működik. Például:
#includeint main() {char name[10];int age;printf("Enter your first name and age: \n");scanf("%s %d", name, &age);printf("You entered: %s %d",name,age);}
Kimenet:
Enter your first name and age:John_Smith 48
A scanf funkcióval az a probléma, hogy soha nem olvassa el a teljes karakterláncokat C-ben. Megállítja az olvasási folyamatot, amint a szóköz, az űrlapadagoló, a függőleges fül, az újsor vagy a kocsi visszatér. Tegyük fel, hogy "Guru99 oktatóanyagokként" adjuk meg a bemenetet, akkor a scanf függvény soha nem fog egy egész karakterláncot beolvasni, mivel a két név között szóköz karakter található. A scanf funkció csak a Guru99-et fogja olvasni.
Ahhoz, hogy egy karakterlánc szóközöket olvashasson, használjuk a get () függvényt. Gets figyelmen kívül hagyja a szóközöket. Új sor elérésekor leáll az olvasás (az Enter billentyűt lenyomva). Például:
#includeint main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}
Kimenet:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
A get () másik biztonságosabb alternatívája a fgets () függvény, amely meghatározott számú karaktert olvas fel. Például:
#includeint main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}
Kimenet:
Enter your name plz: CarlosMy name is Carlos
A fgets () argumentumok a következők:
- a karakterlánc neve,
- az elolvasandó karakterek száma,
- Az stdin azt jelenti, hogy olvasni kell a standard bemenetről, amely a billentyűzet.
Karakterlánc-kimenet: Karakterlánc nyomtatása / megjelenítése
A szabványos printf funkció a karakterláncok C-ban történő nyomtatására vagy megjelenítésére szolgál egy kimeneti eszközön. A használt formátummeghatározó% s
Példa,
printf("%s", name);
A karakterlánc kimenet az fputs () és a printf () függvényekkel történik.
fputs () függvény
Az inputoknak () meg kell adni a karakterlánc nevét és egy mutatót arra a helyre, ahol meg akarja jeleníteni a szöveget. A stdout-ot használjuk, amely a szabványos kimenetre vonatkozik a képernyőre történő nyomtatáshoz. Például:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Kimenet:
Enter your town: New YorkNew York
funkciót tesz
A put függvény segítségével karaktersorozatot nyomtatunk C-be egy kimeneti eszközön, és a kurzort visszahelyezzük az első pozícióba. A put függvény a következő módon használható,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Ennek a függvénynek a szintaxisa viszonylag egyszerű, mint a többi függvény.
A húrkönyvtár
A szokásos „C” könyvtár különféle funkciókat biztosít a húrok kezelésére egy programon belül. Ezeket a függvényeket stringkezelőként is hívják. Ezek a kezelők a
Funkció | Célja |
strlen () | Ez a függvény a karakterlánc hosszának megkeresésére szolgál. Visszaadja, hogy hány karakter van a karakterláncban, kivéve a NULL karaktert. |
strcat (str1, str2) | Ezt a függvényt két karakterlánc kombinálásához használjuk egyetlen karaktersorozat kialakításához. Az str2 végét az str2 végére fűzi vagy összefűzi, és az str1 mutatót adja vissza. |
strcmp (str1, str2) | Ez a függvény két karaktersorozat összehasonlítására szolgál. 0-t ad vissza, ha str1 egyenlő str2-vel, kevesebb, mint 0, ha str1 |
Vizsgáljuk meg az alábbi programot, amely bemutatja a string könyvtár funkciókat:
#include#include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}
Kimenet:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
További fontos könyvtárfunkciók:
- strncmp (str1, str2, n): 0-t ad vissza, ha az str1 első n karaktere megegyezik az str2 első n karakterével, kevesebb, mint 0, ha str1
str2. - strncpy (str1, str2, n) Ez a függvény egy karakterlánc másolására szolgál egy másik karakterláncból. Az str2 első n karakterét átmásolja az str1-be
- strchr (str1, c): mutatót ad vissza a char c első előfordulásához az str1-ben, vagy NULL-ban, ha a karakter nem található.
- strrchr (str1, c): megkeresi az str1-et hátramenetben, és egy karaktert visz vissza a char c pozícióba az str1-ben, vagy NULL, ha a karakter nem található.
- strstr (str1, str2): mutatót ad vissza az str2 első előfordulására az str1-ben, vagy NULL-ra, ha az str2 nem található.
- strncat (str1, str2, n) Az str2 első n karakterét az str1 végéhez fűzi (összefűzi), és egy mutatót ad vissza az str1-be.
- strlwr (): a karakterlánc konvertálása kisbetűvé
- strupr (): a karakterlánc nagybetűvé alakítása
- strrev (): a karakterlánc megfordítása
Karakterlánc konvertálása számgá
A C programozásban számszerű karakterláncokat alakíthatunk át numerikus értékekké, hogy megakadályozzuk a futási idejű hibákat. Az stdio.h könyvtár a következő függvényeket tartalmazza a karakterlánc számokká alakításához:
- int atoi (str) Az ASCII egész számra áll; str-t konvertál az ekvivalens int értékre. A 0 értéket adjuk vissza, ha az első karakter nem szám, vagy nincs szám.
- double atof (str) Az ASCII lebegését jelenti, így az str-t ekvivalens kettős értékre konvertálja. A 0.0 értéket adjuk vissza, ha az első karakter nem szám, vagy nincs szám.
- long int atol (str) Az ASCII hosszú int-re áll, Str-t konvertál az egyenértékű hosszú egész értékre. A 0 értéket adjuk vissza, ha az első karakter nem szám, vagy nincs szám.
A következő program demonstrálja az atoi () függvényt:
#includeint main(){char *string_id[10];int ID;printf("Enter a number: ");gets(string_id);ID = atoi(string_id);printf("you enter %d ",ID);return 0;}
Kimenet:
Enter a number: 221348you enter 221348
- A karakterlánc-deklaráció, például a char * string = "language", konstans, és nem módosítható.
Összegzés
- A karakterlánc a karaktertömbben tárolt karakterek sorozata.
- A karakterlánc kettős idézőjelbe foglalt szöveg.
- Az olyan karakter, mint a „d”, nem karakterlánc, és ezt egyetlen idézőjel jelöli.
- A „C” szabványos könyvtárfunkciókat biztosít a program karakterláncainak manipulálására. A karakterlánc-manipulátorokat a
fejlécfájl tárolja. - A programban való használat előtt deklarálni vagy inicializálni kell a karakterláncot.
- Különböző bemeneti és kimeneti karakterlánc-funkciók vannak, mindegyiknek megvan a maga jellemzője.
- Ne felejtsen el hozzáadni a string könyvtárat, hogy működjön a funkcióival
- A stringet számokká konvertálhatjuk az atoi (), atof () és atol () segítségével, amelyek nagyon hasznosak a folyamatok kódolásához és dekódolásához.
- Különböző karakterláncokat úgy manipulálhatunk, hogy meghatározzuk a C karakterláncok tömbjét.