Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Char ja Merkkijono | Section
C:n Data ja Operaattorit

Char ja Merkkijono

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 merkitsee merkkijonon loppua C:ssä.

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

Note
Huomio

Varmista aina, että merkkitaulukkosi on yhtä alkioita suurempi kuin sisältämänsä teksti, jotta terminaattori mahtuu mukaan.

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

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

  • 'x' on yksinkertaisesti merkkiarvo 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 nolla-numero (ASCII 48), ja "0" on merkkijono, joka sisältää nolla-numeron sekä lopetusmerkin \0.

Merkkijonon tulostus

C-kielessä merkkijonojen (char-arvojen taulukko) näyttämiseen käytetään %s-muotoilumerkkiä. Tämä määrittää printf()-funktion odottamaan merkkijonoa. Käyttämällä %s-merkkiä ilmoitetaan printf()-funktiolle, että sille annetaan merkkijono.

main.c

main.c

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 merkkijonojen käsittelyyn tarkoitettu kirjasto, <string.h>. Tässä kirjastossa on funktio, joka laskee merkkijonon merkkien määrän:

main.c

main.c

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äsitellä merkkijonon alkioita. Koska merkkijonot ovat käytännössä char-taulukoita, myös yksittäisiä merkkejä voidaan muokata niiden indeksien avulla.

Main.c

Main.c

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ä?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Char ja Merkkijono

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 merkitsee merkkijonon loppua C:ssä.

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

Note
Huomio

Varmista aina, että merkkitaulukkosi on yhtä alkioita suurempi kuin sisältämänsä teksti, jotta terminaattori mahtuu mukaan.

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

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

  • 'x' on yksinkertaisesti merkkiarvo 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 nolla-numero (ASCII 48), ja "0" on merkkijono, joka sisältää nolla-numeron sekä lopetusmerkin \0.

Merkkijonon tulostus

C-kielessä merkkijonojen (char-arvojen taulukko) näyttämiseen käytetään %s-muotoilumerkkiä. Tämä määrittää printf()-funktion odottamaan merkkijonoa. Käyttämällä %s-merkkiä ilmoitetaan printf()-funktiolle, että sille annetaan merkkijono.

main.c

main.c

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 merkkijonojen käsittelyyn tarkoitettu kirjasto, <string.h>. Tässä kirjastossa on funktio, joka laskee merkkijonon merkkien määrän:

main.c

main.c

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äsitellä merkkijonon alkioita. Koska merkkijonot ovat käytännössä char-taulukoita, myös yksittäisiä merkkejä voidaan muokata niiden indeksien avulla.

Main.c

Main.c

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

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 6
some-alt