Char og Streng
Stryg for at vise menuen
I C findes der ikke en dedikeret datatypen for strenge (tekst). I stedet gemmes tekst som et array af char, hvor hvert element indeholder et enkelt tegn. For eksempel vil teksten c<>definity blive repræsenteret som en sekvens af tegn gemt i et sådant array.
char arr[12] = {'c','<','>','d','e','f','i','n','i','t','y','\0'};
Du bemærker måske, at teksten "c<>definity" har 11 tegn, men arrayet indeholder 12 elementer. Det ekstra element gemmer null-terminatoren \0, som markerer slutningen på en streng i C.
Det er ikke tallet nul, men et særligt, ikke-printbart tegn (ASCII-kode 0), der fortæller programmet, hvor strengen slutter.
Sørg altid for, at dit karakterarray er et element større end teksten, det indeholder, for at gøre plads til denne terminator.
Det er vigtigt at forstå, at 'x' og "x" ikke er det samme.
En streng består af tegn. Husk altid at afslutte en streng med tegnet \0.
'x'er blot en tegnkonstant af typen char;"x"er en streng, et array af char-værdier, eller i dette tilfælde, {'x', '\0'}.
Forveksl ikke '\0', '0' og "0".
'\0' er nul-tegnet (ASCII 0), '0' er cifret nul (ASCII 48), og "0" er en streng der indeholder cifret nul plus terminatoren \0.
Strengudskrivning
I C, når du vil vise strenge (arrays af char-værdier), bruger du %s-specifikatoren. Denne specifikator vejleder printf()-funktionen om, hvilken type information den skal forvente. Ved at bruge %s informerer vi printf()-funktionen om, at den vil modtage en streng.
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-sproget indeholder et standard bibliotek til strengmanipulation, <string.h>. I dette bibliotek findes en funktion, der tæller antallet af tegn i en streng:
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; }
Husk, selv et mellemrum er et tegn og kræver sin egen plads i arrayet. For eksempel: char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }.
Ved at bruge et indeks kan du få adgang til strengens elementer. Da strenge i bund og grund er char-arrays, kan du også ændre individuelle tegn via deres indeks.
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; }
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat