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.