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.
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'}.
Ä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
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
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; }
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
123456789101112#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // Change the sixth character `f` to `#` printf("%s\n", str); return 0; }
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
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.
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'}.
Ä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
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
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; }
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
123456789101112#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // Change the sixth character `f` to `#` printf("%s\n", str); return 0; }
Kiitos palautteestasi!