Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Char ja String | Tietotyypit ja Muuttujat
C:n Perusteet

bookChar ja String

C-kielessä ei ole omaa tietotyyppiä merkkijonoille (tekstille). Sen sijaan teksti tallennetaan char-taulukkona, jossa jokainen alkio sisältää yhden merkin. Esimerkiksi teksti c<>definity esitetään merkkijonona, joka on tallennettu tällaiseen taulukkoon.

char arr[12] = {'c','<','>','d','e','f','i','n','i','t','y','\0'};

Saatat huomata, että tekstissä "c<>definity" on 11 merkkiä, mutta taulukossa on 12 alkiota. Tämä ylimääräinen alkio sisältää null-terminaattorin \0, joka ilmaisee merkkijonon lopun C:ssä.

Se ei ole numero nolla, vaan erityinen, tulostumaton merkki (ASCII-koodi 0), joka kertoo ohjelmalle, missä merkkijono päättyy.

Note
Huomio

Varmista aina, että merkkitaulukkosi on yhtä alkioita suurempi kuin siihen tallennettava teksti, jotta terminaattorille jää tilaa.

On tärkeää ymmärtää, että 'x' ja "x" eivät ole sama asia.

Merkkijono koostuu merkeistä. Muista aina päättää merkkijono \0-merkkiin.

  • 'x' on yksinkertaisesti merkkivakio tyyppiä char;
  • "x" on merkkijono, eli char-arvojen taulukko, tai tässä tapauksessa {'x', '\0'}.
Note
Huomio

Älä sekoita '\0', '0' ja "0". '\0' on null-merkki (ASCII 0), '0' on numero nolla (ASCII 48), ja "0" on merkkijono, joka sisältää numeron nolla sekä lopetusmerkin \0.

Merkkijonon tulostus

C-kielessä, kun halutaan tulostaa merkkijonoja (char-arvojen taulukoita), käytetään %s-muotoilijaa. Tämä muotoilija ohjaa printf()-funktiota siitä, minkä tyyppistä tietoa sen odotetaan vastaanottavan. Käyttämällä %s-merkkiä ilmoitamme printf()-funktiolle, että se saa merkkijonon.

main.c

main.c

copy
12345678910
#include <stdio.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%s\n", array); // use %s format specifiers return 0; }

C-kielessä on vakio kirjasto merkkijonojen käsittelyyn, <string.h>. Tässä kirjastossa on funktio, joka laskee merkkien määrän merkkijonossa:

main.c

main.c

copy
123456789101112
#include <stdio.h> #include <string.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%d\n", strlen(array)); return 0; }
Note
Huomio

Muista, jopa välilyönti on merkki ja se tarvitsee oman paikkansa taulukossa. Esimerkiksi: char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }.

Indeksin avulla voidaan käyttää merkkijonon alkioita. Koska merkkijonot ovat pohjimmiltaan char-taulukoita, myös yksittäisiä merkkejä voidaan muokata niiden indekseillä.

Main.c

Main.c

copy
123456789101112
#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // Change the sixth character `f` to `#` printf("%s\n", str); return 0; }
question mark

Mikä seuraavista määrittelee merkkijonon oikein C-kielessä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 2.63

bookChar ja String

Pyyhkäise näyttääksesi valikon

C-kielessä ei ole omaa tietotyyppiä merkkijonoille (tekstille). Sen sijaan teksti tallennetaan char-taulukkona, jossa jokainen alkio sisältää yhden merkin. Esimerkiksi teksti c<>definity esitetään merkkijonona, joka on tallennettu tällaiseen taulukkoon.

char arr[12] = {'c','<','>','d','e','f','i','n','i','t','y','\0'};

Saatat huomata, että tekstissä "c<>definity" on 11 merkkiä, mutta taulukossa on 12 alkiota. Tämä ylimääräinen alkio sisältää null-terminaattorin \0, joka ilmaisee merkkijonon lopun C:ssä.

Se ei ole numero nolla, vaan erityinen, tulostumaton merkki (ASCII-koodi 0), joka kertoo ohjelmalle, missä merkkijono päättyy.

Note
Huomio

Varmista aina, että merkkitaulukkosi on yhtä alkioita suurempi kuin siihen tallennettava teksti, jotta terminaattorille jää tilaa.

On tärkeää ymmärtää, että 'x' ja "x" eivät ole sama asia.

Merkkijono koostuu merkeistä. Muista aina päättää merkkijono \0-merkkiin.

  • 'x' on yksinkertaisesti merkkivakio tyyppiä char;
  • "x" on merkkijono, eli char-arvojen taulukko, tai tässä tapauksessa {'x', '\0'}.
Note
Huomio

Älä sekoita '\0', '0' ja "0". '\0' on null-merkki (ASCII 0), '0' on numero nolla (ASCII 48), ja "0" on merkkijono, joka sisältää numeron nolla sekä lopetusmerkin \0.

Merkkijonon tulostus

C-kielessä, kun halutaan tulostaa merkkijonoja (char-arvojen taulukoita), käytetään %s-muotoilijaa. Tämä muotoilija ohjaa printf()-funktiota siitä, minkä tyyppistä tietoa sen odotetaan vastaanottavan. Käyttämällä %s-merkkiä ilmoitamme printf()-funktiolle, että se saa merkkijonon.

main.c

main.c

copy
12345678910
#include <stdio.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%s\n", array); // use %s format specifiers return 0; }

C-kielessä on vakio kirjasto merkkijonojen käsittelyyn, <string.h>. Tässä kirjastossa on funktio, joka laskee merkkien määrän merkkijonossa:

main.c

main.c

copy
123456789101112
#include <stdio.h> #include <string.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%d\n", strlen(array)); return 0; }
Note
Huomio

Muista, jopa välilyönti on merkki ja se tarvitsee oman paikkansa taulukossa. Esimerkiksi: char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }.

Indeksin avulla voidaan käyttää merkkijonon alkioita. Koska merkkijonot ovat pohjimmiltaan char-taulukoita, myös yksittäisiä merkkejä voidaan muokata niiden indekseillä.

Main.c

Main.c

copy
123456789101112
#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // Change the sixth character `f` to `#` printf("%s\n", str); return 0; }
question mark

Mikä seuraavista määrittelee merkkijonon oikein C-kielessä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6
some-alt