Char 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.
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'}.
Ä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
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
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äyttää merkkijonon alkioita. Koska merkkijonot ovat pohjimmiltaan char-taulukoita, myös yksittäisiä merkkejä voidaan muokata niiden indekseillä.
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
Awesome!
Completion rate improved to 2.63
Char 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.
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'}.
Ä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
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
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äyttää merkkijonon alkioita. Koska merkkijonot ovat pohjimmiltaan char-taulukoita, myös yksittäisiä merkkejä voidaan muokata niiden indekseillä.
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!