Stygos C: kaip deklaruoti kintamąjį, inicializuoti, spausdinti, pavyzdį

Kas yra eilutė C?

Styginių C nieko, bet simbolių rinkinys linijiniu eilės. „C“ visada laiko eilutę atskirais duomenimis, net jei jose yra tarpų. Vienas simbolis apibrėžiamas naudojant vienos citatos atvaizdavimą. Stygos vaizduojamos naudojant dvigubas kabutes.

Example, "Welcome to the world of programming!"

„C“ pateikia standartinę biblioteką , kurioje yra daugybė funkcijų, kurias galima naudoti lengvai atliekant sudėtingas operacijas C eilutėse.

Šioje pamokoje sužinosite

  • Kaip deklaruoti ir inicializuoti eilutę C
  • Stygos įvestis: perskaitykite eilutę
  • Styginių išvestis: spausdinkite / pateikite eilutę
    • įvesties () funkcija
    • uždeda funkciją
  • Styginių biblioteka
  • Stygos pavertimas skaičiumi

Kaip deklaruoti ir inicializuoti eilutę C

„AC String“ yra paprastas masyvas, kurio duomenų tipas yra char. „C“ kalba tiesiogiai nepalaiko eilutės kaip duomenų tipo. Taigi, norėdami rodyti eilutę C, turite naudoti simbolių masyvą.

Bendra kintamojo deklaravimo kaip eilutės C sintaksė yra tokia,

char string_variable_name [array_size];

Klasikinę stygų deklaraciją galima atlikti taip:

 char string_name[string_length] = "string"; 

Masyvo dydis turi būti apibrėžtas deklaruojant C eilutės kintamąjį, nes jis naudojamas apskaičiuoti, kiek simbolių bus saugoma C eilutės kintamajame. Kai kurie galiojantys eilutės deklaravimo pavyzdžiai yra šie:

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

Ankstesniame pavyzdyje pateikiami eilutės kintamieji, kurių masyvo dydis yra 15. Tai reiškia, kad pateiktame C eilutės masyve gali būti daugiausia 15 simbolių. Masyvo indeksavimas prasideda nuo 0, taigi jame bus saugomi simboliai iš 0–14 pozicijos. C kompiliatorius automatiškai prideda NULL simbolį „\ 0“ prie sukurto simbolių masyvo.

Panagrinėkime styginių inicializavimą C. Toliau pateiktame pavyzdyje parodomas eilučių inicializavimas C,

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

3 eilutėje NULL simbolis turi būti aiškiai pridėtas, o simboliai yra uždėti vienose kabutėse.

„C“ taip pat leidžia mums inicializuoti eilutės kintamąjį, neapibrėžiant simbolių masyvo dydžio. Tai galima padaryti tokiu būdu,

char first_name[ ] = "NATHAN";

Styginių pavadinimas C veikia kaip rodyklė, nes iš esmės tai yra masyvas.

Stygos įvestis: perskaitykite eilutę

Rašydamas interaktyvias programas, kuriose prašoma vartotojo įvesties, C pateikia scanf (), get () ir fgets () funkcijas, kad surastų vartotojo įvesto teksto eilutę.

Kai skaitymui naudojame scanf (), „% s“ formato specifikatorių nenaudojame „&“ norint pasiekti kintamojo adresą, nes masyvo pavadinimas veikia kaip rodyklė. Pavyzdžiui:

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

Išvestis:

Enter your first name and age:John_Smith 48

Funkcija „scanf“ yra ta, kad ji niekada neskaito visų eilučių C. Tai sustabdys skaitymo procesą, kai tik atsiras tarpų, formų tiekimo, vertikalaus skirtuko, naujos eilutės ar grįžimo į vežimą. Tarkime, kad įvestis yra „Guru99 pamokos“, tada funkcija scanf niekada neskaitys visos eilutės, nes tarp dviejų pavadinimų yra tarpas. Funkcija „scanf“ nuskaitys tik „Guru99“.

Norėdami perskaityti eilutę, kurioje yra tarpai, mes naudojame funkciją „get“). Getsas nepaiso tarpų. Jis nustoja skaityti, kai pasiekiama nauja eilutė (paspaudžiamas klavišas Enter). Pavyzdžiui:

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

Išvestis:

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

Kita saugesnė „get“ () alternatyva yra „fgets“ () funkcija, kuri nuskaito nurodytą skaičių simbolių. Pavyzdžiui:

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

Išvestis:

Enter your name plz: CarlosMy name is Carlos

„Fgets“ () argumentai yra šie:

  • eilutės pavadinimas,
  • skaitomų simbolių skaičius,
  • „stdin“ reiškia skaityti iš standartinės įvesties, kuri yra klaviatūra.

Styginių išvestis: spausdinkite / pateikite eilutę

Standartinė „printf“ funkcija naudojama spausdinant ar rodant stygas C išvesties įrenginyje. Naudojamas formato specifikatorius yra% s

Pavyzdys,

printf("%s", name);

Styginių išvestis atliekama su įvesties () ir printf () funkcijomis.

įvesties () funkcija

Įvestims () reikia eilutės pavadinimo ir žymiklio, kur norite rodyti tekstą. Norėdami spausdinti į ekraną, naudojame standartinį išvestį nurodantį „stdout“. Pavyzdžiui:

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

Išvestis:

Enter your town: New YorkNew York

uždeda funkciją

„Put“ funkcija naudojama spausdinti eilutę C išvesties įrenginyje ir žymeklį perkelti atgal į pirmąją padėtį. „A Put“ funkciją galima naudoti taip,

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

Šios funkcijos sintaksė yra palyginti paprasta nei kitų funkcijų.

Styginių biblioteka

Standartinė „C“ biblioteka teikia įvairias funkcijas, kad būtų galima manipuliuoti programos eilutėmis. Šios funkcijos taip pat vadinamos stygų tvarkytuvais. Visi šie tvarkytuvai yra antraštės faile .

Funkcija Tikslas
strlen () Ši funkcija naudojama ieškant eilutės ilgio. Pateikiama, kiek simbolių yra eilutėje, išskyrus simbolį NULL.
strcat (str1, str2) Ši funkcija naudojama derinant dvi eilutes ir sudarant vieną eilutę. Str2 prideda arba sujungia str2 iki str1 pabaigos ir grąžina žymeklį į str1.
strcmp (str1, str2) Ši funkcija naudojama dviejų eilučių palyginimui. Jis grąžina 0, jei str1 yra lygus str2, mažiau nei 0, jei str1 str2.

Panagrinėkime žemiau esančią programą, kurioje parodomos eilutės bibliotekos funkcijos:

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

Išvestis:

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

Kitos svarbios bibliotekos funkcijos yra šios:

  • strncmp (str1, str2, n): jis grąžina 0, jei pirmieji n str1 simboliai yra lygūs pirmiesiems n str2 simboliams, mažiau nei 0, jei str1 str2.
  • strncpy (str1, str2, n) Ši funkcija naudojama kopijuoti eilutę iš kitos eilutės. Pirmieji n str2 simbolių nukopijuojami į str1
  • strchr (str1, c): jis grąžina žymeklį į pirmąjį char c įvykį str1, arba NULL, jei simbolis nerastas.
  • strrchr (str1, c): jis ieško str1 atvirkščiai ir grąžina žymeklį į char c padėtį str1, arba NULL, jei simbolis nerastas.
  • strstr (str1, str2): grąžina žymeklį į pirmą str2 įvykį str1, arba NULL, jei str2 nerastas.
  • strncat (str1, str2, n) Prie str1 pabaigos prideda (sujungia) pirmuosius n str2 simbolius ir grąžina žymeklį į str1.
  • strlwr (): konvertuoti eilutę į mažąsias raides
  • strupr (): konvertuoti eilutę į didžiąsias raides
  • strrev (): pakeisti eilutę

Stygos pavertimas skaičiumi

Programuodami C, mes galime konvertuoti skaitinių simbolių eilutę į skaitinę vertę, kad išvengtume vykdymo laiko klaidos. „Stdio.h“ bibliotekoje yra šios eilutės pavertimo skaičiumi funkcijos:

  • int atoi (str) reiškia, kad ASCII yra sveikas skaičius; jis paverčia str ekvivalentine int verte. 0 grąžinama, jei pirmasis simbolis nėra skaičius arba nėra jokių skaičių.
  • double atof (str) Stovi, kad ASCII plauktų, jis konvertuoja str į lygiavertę dvigubą vertę. 0.0 grąžinamas, jei pirmasis simbolis nėra skaičius arba nėra jokių skaičių.
  • long int atol (str) ASCII reiškia ilgą int. Konvertuoja str į lygiavertę ilgojo sveiko skaičiaus vertę. 0 grąžinama, jei pirmasis simbolis nėra skaičius arba nėra jokių skaičių.

Ši programa demonstruoja atoi () funkciją:

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

Išvestis:

Enter a number: 221348you enter 221348
  • Stygos žymeklio deklaracija, pvz., Char * string = "language", yra konstanta ir jos negalima modifikuoti.

Santrauka

  • Eilutė yra simbolių seka, saugoma simbolių masyve.
  • Stygos yra tekstas, įterptas į dvigubas kabutes.
  • Simbolis, pvz., „D“, nėra eilutė ir jis nurodomas vienkartinėmis kabutėmis.
  • „C“ suteikia standartines bibliotekos funkcijas, skirtas valdyti eilutes programoje. Styginių manipuliatoriai saugomi antraštėje .
  • Eilutė turi būti deklaruota arba inicializuota prieš ją naudojant programoje.
  • Yra skirtingos įvesties ir išvesties eilutės funkcijos, kiekviena iš jų turi savo ypatybes.
  • Nepamirškite įtraukti eilutės bibliotekos, kad galėtumėte dirbti su jos funkcijomis
  • Mes galime konvertuoti eilutę į skaičių per atoi (), atof () ir atol (), kurie yra labai naudingi koduojant ir dekoduojant procesus.
  • Mes galime manipuliuoti skirtingomis eilutėmis, apibrėždami C eilučių masyvą.

Įdomios straipsniai...