Karakterláncok C-ben: Hogyan deklaráljunk és inicializáljunk karakterlánc-változókat C-ben
Mi a String C-ben?
A String C-ben nem más, mint karakterek gyűjteménye egy lineáris sorozatban. A 'C' mindig egyetlen adatként kezeli a karakterláncot, még akkor is, ha az szóközöket tartalmaz. Egyetlen karakter definiálása egy idézőjel ábrázolással történik. Egy karakterláncot idézőjelekkel ábrázolunk.
Example, "Welcome to the world of programming!"
A „C” szabványos könyvtárat biztosít amely számos olyan funkciót tartalmaz, amelyek segítségével könnyen végrehajthatók bonyolult műveletek a Strings C-ben.
Hogyan deklaráljunk egy karakterláncot C-ben?
Az AC String egy egyszerű tömb char adattípussal. "C" nyelv közvetlenül nem támogatja a karakterláncot adattípusként. Ezért egy karakterlánc C-ben történő megjelenítéséhez karaktertömböt kell használni.
A változók karakterláncként való deklarálásának általános szintaxisa C-ben a következő:
char string_variable_name [array_size];
A karakterláncok klasszikus deklarációja a következőképpen hajtható végre:
char string_name[string_length] = "string";
A tömb méretét meg kell határozni a C String változó deklarálásakor, mivel ez arra szolgál, hogy kiszámítsa, hány karaktert kell tárolni a C karakterlánc-változón belül. Néhány érvényes példa a karakterlánc deklarációra a következő:
char first_name[15]; //declaration of a string variable char last_name[15];
A fenti példa 15-ös tömbméretű karakterlánc-változókat ábrázol. Ez azt jelenti, hogy az adott C karakterlánc tömb legfeljebb 15 karaktert képes tárolni. A tömb indexelése 0-tól kezdődik, így a karaktereket 0-tól 14-ig tárolja. A C fordító automatikusan hozzáad egy NULL '\0' karaktert a létrehozott karaktertömbhöz.
Hogyan kell inicializálni egy karakterláncot C-ben?
Tanulmányozzuk 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 declaration char 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 idézőjelek közé kell tenni.
A 'C' azt is lehetővé teszi, hogy inicializáljuk a karakterlánc változó a karaktertömb méretének meghatározása nélkül. Ezt a következő módon lehet megtenni,
char first_name[ ] = "NATHAN";
A Strings neve C-ben mutatóként működik, mivel alapvetően egy tömb.
C String bemenet: C Program a karakterlánc olvasásához
Amikor olyan interaktív programokat írunk, amelyek a felhasználótól bevitelt kérnek, a C a scanf(), gets() és fgets() függvényeket biztosítja a felhasználó által beírt szövegsor megtalálásához.
Amikor a scanf()-t használjuk az olvasáshoz, akkor a „%s” formátum-meghatározót használjuk anélkül, hogy az „&”-t használnánk a változó címének eléréséhez, mivel a tömbnév mutatóként működik.
Például:
#include <stdio.h> int 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); }
output:
Enter your first name and age: John_Smith 48
A scanf függvénnyel az a probléma, hogy soha nem olvassa be a teljes karakterláncot C-ben. Leállítja az olvasási folyamatot, amint szóköz, űrlapemelés, függőleges tabulátor, újsor vagy kocsi visszatérés történik. Tegyük fel, hogy „Guru99 Tutorials”-ként adjuk meg a bemenetet, akkor a scanf függvény soha nem olvas be egy teljes karakterláncot, mivel a két név között szóköz van. A scanf funkció csak olvasni fog Guru99.
Egy szóközt tartalmazó karakterlánc olvasásához a gets() függvényt használjuk. A Gets figyelmen kívül hagyja a szóközöket. Megáll
újsor elérésekor (az Enter billentyű lenyomása).
Például:
#include <stdio.h> int main() { char full_name[25]; printf("Enter your full name: "); gets(full_name); printf("My full name is %s ",full_name); return 0; }
output:
Enter your full name: Dennis Ritchie My full name is Dennis Ritchie
A gets() másik biztonságosabb alternatívája az fgets() függvény, amely meghatározott számú karaktert olvas be.
Például:
#include <stdio.h> int main() { char name[10]; printf("Enter your name plz: "); fgets(name, 10, stdin); printf("My name is %s ",name); return 0;}
output:
Enter your name plz: Carlos My name is Carlos
Az fgets() argumentumok a következők:
- a karakterlánc neve,
- az olvasandó karakterek száma,
- Az stdin azt jelenti, hogy a standard bemenetről kell olvasni, ami a billentyűzet.
C String kimenet: C program egy karakterlánc nyomtatásához
A szabványos printf funkció a karakterláncok C nyelven 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 kimenete az fputs() és printf() függvényekkel történik.
fputs() függvény
Az fputs()-nak szüksége van a karakterlánc nevére és egy mutatóra, ahol meg szeretné jeleníteni a szöveget. Az stdout-ot használjuk, amely a szabványos kimenetre utal a képernyőre történő nyomtatáshoz.
Például:
#include <stdio.h> int main() {char town[40]; printf("Enter your town: "); gets(town); fputs(town, stdout); return 0;}
output:
Enter your town: New York New York
funkciót helyez el
A puts funkció segítségével karakterláncot nyomtathat C nyelven egy kimeneti eszközön, és visszahelyezheti a kurzort az első pozícióba. A puts függvény a következő módon használható:
#include <stdio.h> int main() { char name[15]; gets(name); //reads a string puts(name); //displays a string return 0;}
Ennek a függvénynek a szintaxisa viszonylag egyszerű, mint a többi függvényé.
A húrkönyvtár
A szabványos „C” könyvtár különféle funkciókat biztosít a programon belüli karakterláncok kezeléséhez. Ezeket a függvényeket karakterlánckezelőknek is nevezik. Mindezek a kezelők bent vannak fejléc fájl.
Funkció | Cél |
---|---|
strlen() | Ez a függvény egy karakterlánc hosszának meghatározására szolgál. Visszaadja, hogy hány karakter van egy karakterláncban, kivéve a NULL karaktert. |
strcat(str1, str2) | Ez a funkció két karakterlánc kombinálására szolgál egyetlen karakterlánc létrehozására. Hozzáfűzi vagy összefűzi az str2-t az str1 végéhez, és visszaad egy mutatót az str1-re. |
strcmp(str1, str2) | Ez a függvény két karakterlánc összehasonlítására szolgál. 0-t ad vissza, ha str1 egyenlő str2-vel, 0-nál kisebbet, ha str1 < str2, és 0-nál nagyobbat, ha str1 > str2. |
Tekintsük az alábbi programot, amely a karakterlánc-könyvtár funkciókat mutatja be:
#include <stdio.h> #include <string.h> int main () { //string initialization char string1[15]="Hello"; char string2[15]=" World!"; char string3[15]; int val; //string comparison val= strcmp(string1,string2); if(val==0){ printf("Strings are equal\n"); } else{ printf("Strings are not equal\n"); } //string concatenation printf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world! //string length printf("\nLength of first string:%d",strlen(string1)); printf("\nLength of second string:%d",strlen(string2)); //string copy printf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3 return 0; }
output:
Strings are not equal Concatenated string:Hello World! Length of first string:12 Length of second string:7 Copied string is:Hello World!
További fontos könyvtári funkciók:
- strncmp(str1, str2, n): 0-t ad vissza, ha az str1 első n karaktere egyenlő az str2 első n karakterével, kisebb, mint 0, ha str1 < str2, és nagyobb, mint 0, ha str1 > str2.
- strncpy(str1, str2, n) Ez a függvény egy karakterlánc egy másik karakterláncból történő másolására szolgál. Az str2 első n karakterét az str1-be másolja
- strchr(str1, c): mutatót ad vissza a char c első előfordulására az str1-ben, vagy NULL-t, ha a karakter nem található.
- strrchr(str1, c): fordított irányban keresi az str1-et, és egy mutatót ad vissza a char c helyére az str1-ben, vagy NULL-t, 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-t, ha az str2 nem található.
- strncat(str1, str2, n) Az str2 első n karakterét hozzáfűzi (összefűzi) az str1 végéhez, és visszaadja az str1 mutatót.
- strlwr() : karakterlánc kisbetűvé alakítása
- strupr() : karakterlánc nagybetűvé alakítása
- strrev() : megfordítja a karakterláncot
Karakterlánc átalakítása számmá
A C programozásban a numerikus karakterekből álló sztringet átalakíthatjuk numerikus értékké, hogy megakadályozzuk a futásidejű hibát. Az stdio.h könyvtár a következő függvényeket tartalmazza a karakterlánc számmá alakításához:
- int atoi(str) Az ASCII jelentése egész szám; az str-t az egyenértékű int értékre konvertálja. 0-t ad vissza, ha az első karakter nem szám, vagy nem található szám.
- double atof(str) Az ASCII lebegtetést jelenti, az str-t az egyenértékű dupla értékre konvertálja. 0.0-t ad vissza, ha az első karakter nem szám, vagy nem található szám.
- long int atol(str) Az ASCII jelentése long int, az str-t az egyenértékű hosszú egész értékre konvertálja. 0-t ad vissza, ha az első karakter nem szám, vagy nem található szám.
A következő program az atoi() függvényt mutatja be:
#include <stdio.h> int 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;}
output:
Enter a number: 221348 you enter 221348
- A karakterlánc-mutató deklarációja, például a char *string = „language” egy állandó, és nem módosítható.
Összegzésként
- A karakterlánc egy karaktertömbben tárolt karaktersorozat.
- A karakterlánc dupla idézőjelbe zárt szöveg.
- Az olyan karakter, mint például a „d” nem karakterlánc, és egyetlen idézőjel jelzi.
- A 'C' szabványos könyvtári függvényeket biztosít a programban lévő karakterláncok kezeléséhez. A karakterlánc-manipulátorok tárolva vannak fejléc fájl.
- A karakterláncot deklarálni vagy inicializálni kell, mielőtt programba használnánk.
- Különböző bemeneti és kimeneti karakterlánc-funkciók léteznek, mindegyiknek megvan a maga sajátossága.
- Ne felejtse el beilleszteni a karakterlánc-könyvtárat, hogy működjön a funkcióival
- A karakterláncot számmá alakíthatjuk az atoi(), atof() és atol() segítségével, amelyek nagyon hasznosak a kódolási és dekódolási folyamatokhoz.
- Különböző karakterláncokat kezelhetünk úgy, hogy karakterláncok tömbjét definiáljuk C-ben.