Jouset C: ssä (esimerkkien kanssa)

Tässä opetusohjelmassa opit merkkijonoista C-ohjelmoinnissa. Opit ilmoittamaan ne, alustamaan ne ja käyttämään niitä erilaisissa I / O-operaatioissa esimerkkien avulla.

C-ohjelmoinnissa merkkijono on merkkijono, joka on lopetettu nollamerkillä . Esimerkiksi:

 char c() = "c string"; 

Kun kääntäjä kohtaa merkkijonon, joka on suljettu lainausmerkkeihin, se lisää oletusarvoisesti nollan merkin .

Kuinka julistaa merkkijono?

Näin voit julistaa merkkijonot:

 char s(5); 

Tässä olemme julistaneet 5 merkin merkkijonon.

Kuinka alustaa merkkijonot?

Voit alustaa merkkijonot useilla tavoilla.

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Otetaan toinen esimerkki:

 char c(5) = "abcde";

Tässä yritämme osoittaa 6 merkkiä (viimeinen merkki on '') charryhmälle, jolla on 5 merkkiä. Tämä on huono, eikä sinun pitäisi koskaan tehdä tätä.

Arvojen määrittäminen merkkijonoille

Taulukot ja merkkijonot ovat C-luokan toisen luokan kansalaisia; he eivät tue tehtävänoperaattoria, kun se on ilmoitettu. Esimerkiksi,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Huomaa: Käytä merkkijonoa kopioimalla strcpy () -toiminto.

Lue käyttäjän merkkijono

Voit käyttää scanf()toimintoa merkkijonon lukemiseen.

scanf()Toiminto lukee merkkijono, kunnes se kohtaa välilyönnillä (tila, rivinvaihto, välilehti, jne.).

Esimerkki 1: scanf () merkkijonon lukemiseksi

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Tuotos

 Kirjoita nimi: Dennis Ritchie Nimesi on Dennis.

Vaikka Dennis Ritchie oli mukana yllä olevassa ohjelmassa, vain "Dennis" tallennettiin nimimerkkijonoon. Se johtuu siitä, että Denniksen jälkeen oli tilaa.

Kuinka lukea tekstirivi?

Voit käyttää fgets()toimintoa merkkijonorivin lukemiseen. Ja voit puts()näyttää merkkijonon.

Esimerkki 2: fgets () ja put (()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Tuotos

 Kirjoita nimi: Tom Hanks Nimi: Tom Hanks 

Tässä olemme käyttäneet fgets()funktiota lukemaan merkkijono käyttäjältä.

fgets(name, sizeof(name), stdlin); // read string

sizeof(name)Tulokset 30. Näin ollen voimme ottaa korkeintaan 30 merkkiä tulona, joka on koko nimen merkkijono.

Merkkijonon tulostamiseen olemme käyttäneet puts(name);.

Huomautus:gets() toiminto voi olla myös ottaa käyttäjän syötettä. Se on kuitenkin poistettu C-standardista.
Se johtuu siitä, gets()että voit syöttää minkä tahansa pituisen merkin. Siksi voi olla puskurin ylivuoto.

Merkkijonojen välittäminen toiminnoille

Merkkijonot voidaan siirtää funktiolle samalla tavalla kuin taulukot. Lisätietoja taulukoiden välittämisestä funktiolle.

Esimerkki 3: Merkkijonon välittäminen funktiolle

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Jouset ja vihjeet

Samanlaisia ​​kuin taulukot, merkkijonojen nimet "hajoavat" osoittimiksi. Siksi voit käyttää osoittimia manipuloida merkkijonon elementtejä. Suosittelemme, että tarkistat C-taulukot ja osoittimet ennen tämän esimerkin tarkistamista.

Esimerkki 4: Merkkijonot ja osoittimet

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Yleisesti käytetyt merkkijonofunktiot

  • strlen () - laskee merkkijonon pituuden
  • strcpy () - kopioi merkkijonon toiseen
  • strcmp () - vertaa kahta merkkijonoa
  • strcat () - ketjuttaa kaksi merkkijonoa

Mielenkiintoisia artikkeleita...