Stringid C-s: kuidas deklareerida muutuja, lähtestada, printida, näide

Lang L: none (table-of-contents):

Anonim

Mis on string C-s?

String C on vaid märkide kogu lineaarses järjestuses. 'C' käsitleb stringi alati üksikute andmetena, isegi kui need sisaldavad tühikuid. Ühe tähe määratlemisel kasutatakse ühte jutumärki. Stringi esitamiseks kasutatakse topelt jutumärke.

Example, "Welcome to the world of programming!"

'C' pakub standardset teeki , mis sisaldab paljusid funktsioone, mida saab kasutada keerukate toimingute hõlpsaks teostamiseks C stringides.

Selles õpetuses saate teada

  • Kuidas string deklareerida ja initsialiseerida C-s
  • Stringi sisend: loe stringi
  • Stringi väljund: stringi printimine / kuvamine
    • funktsioonid sisendid ()
    • paneb funktsiooni
  • Stringi raamatukogu
  • Stringi teisendamine arvuks

Kuidas string deklareerida ja initsialiseerida C-s

AC String on lihtne massiiv, kus andmetüübina on tähis char. C-keel ei toeta stringe otseselt andmetüübina. Seega peate stringi kuvamiseks C-s kasutama märkide massiivi.

Muutuja muutuja Stringiks C-s deklareerimise üldine süntaks on järgmine,

char string_variable_name [array_size];

Klassikalist stringide deklaratsiooni saab teha järgmiselt:

 char string_name[string_length] = "string"; 

Massiivi suurus tuleb määratleda muutuja C String deklareerimisel, kuna seda kasutatakse arvutada, mitu tähemärki C-s stringimuutuja sisse salvestatakse. Mõned stringide deklaratsiooni kehtivad näited on järgmised,

char first_name[15]; //declaration of a string variablechar last_name[15];

Ülaltoodud näide tähistab stringimuutujaid massiivi suurusega 15. See tähendab, et antud C-stringi massiiv mahutab maksimaalselt 15 tähemärki. Massiivi indekseerimine algab 0-st, seega salvestatakse tähemärgid 0-14-st positsioonist. C-kompilaator lisab loodud tähemassiivi NULL-märgi '\ 0'.

Uurime stringide initsialiseerimist C. Järgmine näide näitab stringide initsialiseerimist C-s,

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*/

Stringis 3 tuleb NULL-märk selgesõnaliselt lisada ja tähemärgid on ümbritsetud jutumärkidega.

"C" võimaldab meil ka initsialiseerida stringimuutuja ilma tähemassiivi suurust määratlemata. Seda saab teha järgmiselt:

char first_name[ ] = "NATHAN";

Stringide nimetus C-s toimib osutina, kuna see on põhimõtteliselt massiiv.

Stringi sisend: loe stringi

Kui kirjutate interaktiivseid programme, mis küsivad kasutajalt sisendit, pakub C kasutajale sisestatud tekstirea leidmiseks funktsioone scanf (), get () ja fgets ().

Kui kasutame lugemiseks skannimist scanf (), kasutame vorminguspetsifikaatorit "% s", ilma et muutuja aadressile juurdepääsuks kasutataks "&" -d, kuna massiivi nimi toimib osuti. Näiteks:

#include 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);}

Väljund:

Enter your first name and age:John_Smith 48

Funktsiooniga scanf on see, et see ei loe kunagi terveid stringe C-s. See peatab lugemisprotsessi niipea, kui ilmub tühimik, vormivoog, vertikaalne sakk, uus rida või veo tagasitulek. Oletame, et sisestame sisendi "Guru99 õpetused", siis funktsioon scanf ei loe kunagi tervet stringi, kuna kahe nime vahel esineb tühimärk. Funktsioon scanf loeb ainult Guru99.

Stringi sisaldavate tühikute lugemiseks kasutame funktsiooni get (). Gets ignoreerib tühimikke. Uue rea saabumisel lõpetatakse selle lugemine (vajutatakse klahvi Enter). Näiteks:

#include int main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}

Väljund:

Enter your full name: Dennis RitchieMy full name is Dennis Ritchie

Teine ohutum alternatiiv funktsioonile get () on funktsioon fgets (), mis loeb määratud arvu märke. Näiteks:

#include int main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}

Väljund:

Enter your name plz: CarlosMy name is Carlos

Fgets () argumendid on järgmised:

  • stringi nimi,
  • loetavate märkide arv,
  • stdin tähendab lugeda standardsest sisendist, milleks on klaviatuur.

Stringi väljund: stringi printimine / kuvamine

Standardset printf-funktsiooni kasutatakse stringide printimiseks või kuvamiseks C-s väljundseadmes. Kasutatav vorminguspetsifikaator on% s

Näide

printf("%s", name);

Stringi väljastamine toimub funktsioonide sisend () ja printf () abil.

funktsioonid sisendid ()

Sisendid () vajavad stringi nime ja osutit sinna, kuhu soovite teksti näidata. Ekraanile printimiseks kasutame stdout, mis viitab standardväljundile. Näiteks:

#include int main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}

Väljund:

Enter your town: New YorkNew York

paneb funktsiooni

Funktsiooni Pugs kasutatakse stringi printimiseks väljundseadmes C ja kursori viimiseks esimesse asendisse. A-funktsiooni saab kasutada järgmiselt:

#include int main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}

Selle funktsiooni süntaks on teiste funktsioonidega võrreldes suhteliselt lihtne.

Stringi raamatukogu

Standardne C-teek pakub mitmesuguseid funktsioone programmis sisalduvate stringidega manipuleerimiseks. Neid funktsioone nimetatakse ka stringikäsitlejateks. Kõik need käitlejad asuvad päisefailis .

Funktsioon Eesmärk
strlen () Seda funktsiooni kasutatakse stringi pikkuse leidmiseks. See tagastab, kui palju tähemärke stringis on, välja arvatud märk NULL.
strcat (str1, str2) Seda funktsiooni kasutatakse kahe stringi ühendamiseks ühe stringi moodustamiseks. See lisab või ühendab str2 str1 lõpuni ja tagastab str1 stringi.
strcmp (str1, str2) Seda funktsiooni kasutatakse kahe stringi võrdlemiseks. See tagastab 0, kui str1 on võrdne str2, väiksem kui 0, kui str1 str2.

Vaatleme allpool olevat programmi, mis näitab stringiteegi funktsioone:

#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;}

Väljund:

Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!

Teised olulised raamatukogu funktsioonid on:

  • strncmp (str1, str2, n): see tagastab 0, kui str1 esimene n tähemärki on võrdne str2 esimese n tähemärgiga, väiksem kui 0, kui str1 str2.
  • strncpy (str1, str2, n) Seda funktsiooni kasutatakse stringi kopeerimiseks teisest stringist. Kopeerib str2 esimesed n tähemärki str1
  • strchr (str1, c): see tagastab kursori str1 esmakordse esinemise korral c või NULL, kui märki ei leitud.
  • strrchr (str1, c): see otsib str1 tagurpidi ja tagastab kursori str1-s char c-i kohale või NULL, kui märki ei leitud.
  • strstr (str1, str2): see tagastab kursori str2 esmakordsele esinemisele str1-s või NULL, kui str2-d ei leitud.
  • strncat (str1, str2, n) Lisab (liidab) str2 esimesed n tähemärki str1 lõppu ja tagastab kursori str1.
  • strlwr (): stringi teisendamiseks väiketäheks
  • strupr (): stringi teisendamiseks suurtäheks
  • strrev (): stringi ümberpööramine

Stringi teisendamine arvuks

C-programmeerimisel võime teisendada numbrimärkide stringi arvväärtuseks, et vältida tööaja viga. Stdio.h teek sisaldab stringi teisendamiseks arvuks järgmisi funktsioone:

  • int atoi (str) tähistab ASCII täisarvuks; see teisendab str samaväärseks int-väärtuseks. 0 tagastatakse, kui esimene märk ei ole number või numbreid pole.
  • double atof (str) Tähistab ASCII ujumist, teisendab str samaväärseks topeltväärtuseks. 0.0 tagastatakse, kui esimene märk ei ole number või kui numbreid ei esine.
  • pikk int atol (str) tähistab ASCII pikkaks int, teisendab str ekvivalentseks pikaks täisarvuks. 0 tagastatakse, kui esimene märk ei ole number või kui numbreid pole.

Järgmine programm demonstreerib atoi () funktsiooni:

#include 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;}

Väljund:

Enter a number: 221348you enter 221348
  • Stringi kursori deklaratsioon nagu char * string = "keel" on konstant ja seda ei saa muuta.

Kokkuvõte

  • String on tähemärkide massiivi salvestatud jada.
  • String on jutumärkidesse suletud tekst.
  • Märk nagu 'd' ei ole string ja seda tähistatakse üksikute jutumärkidega.
  • 'C' pakub standardseid teegi funktsioone programmis olevate stringidega manipuleerimiseks. Stringmanipulaatorid on salvestatud päisefaili .
  • Enne programmis kasutamist tuleb string deklareerida või initsialiseerida.
  • Sisend- ja väljundstringi funktsioone on erinevaid, igal neist on oma omadused.
  • Ärge unustage selle funktsioonidega töötamiseks lisada stringiteeki
  • Stringi saab teisendada numbriks läbi atoi (), atof () ja atol (), mis on protsesside kodeerimiseks ja dekodeerimiseks väga kasulikud.
  • Saame manipuleerida erinevate stringidega, määratledes stringide massiivi C-s.