Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Char och Sträng | Sektion
C-data och operatorer

Char och Sträng

Svep för att visa menyn

I C finns det ingen särskild datatyp för strängar (text). Istället lagras text som en array av char, där varje element innehåller en enskild tecken. Till exempel skulle texten c<>definity representeras som en sekvens av tecken lagrade i en sådan array.

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

Du kanske märker att texten "c<>definity" har 11 tecken, men arrayen innehåller 12 element. Det extra elementet lagrar nolltecknet \0, som markerar slutet på en sträng i C.

Det är inte siffran noll, utan ett speciellt, icke-utskrivbart tecken (ASCII-kod 0) som talar om för programmet var strängen slutar.

Note
Notera

Se alltid till att din teckenarray är ett element större än texten den innehåller för att rymma detta avslutningstecken.

Det är viktigt att förstå att 'x' och "x" inte är samma sak.

En sträng består av tecken. Kom alltid ihåg att avsluta en sträng med tecknet \0.

  • 'x' är helt enkelt en teckenkonstant av typen char;
  • "x" är en sträng, en array av char-värden, eller i detta fall, {'x', '\0'}.
Note
Notera

Blanda inte ihop '\0', '0' och "0". '\0' är nulltecknet (ASCII 0), '0' är siffran noll (ASCII 48), och "0" är en sträng som innehåller siffran noll plus terminatorn \0.

Strängutmatning

I C används specifikatorn %s för att visa strängar (arrayer av char-värden). Denna specifikator talar om för funktionen printf() vilken typ av information den ska förvänta sig. Genom att använda %s informerar vi printf()-funktionen om att den kommer att ta emot en sträng.

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; }

Språket C innehåller ett standardiserat bibliotek för stränghantering, <string.h>. I detta bibliotek finns en funktion som räknar antalet tecken i en sträng:

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
Notera

Kom ihåg, även ett mellanslag är ett tecken och kräver en egen plats i arrayen. Till exempel: char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }.

Genom att använda ett index kan du komma åt strängens element. Eftersom strängar i grunden är char-arrayer kan du även ändra enskilda tecken via deras index.

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

Vilket av följande deklarerar en sträng korrekt i C?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Char och Sträng

I C finns det ingen särskild datatyp för strängar (text). Istället lagras text som en array av char, där varje element innehåller en enskild tecken. Till exempel skulle texten c<>definity representeras som en sekvens av tecken lagrade i en sådan array.

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

Du kanske märker att texten "c<>definity" har 11 tecken, men arrayen innehåller 12 element. Det extra elementet lagrar nolltecknet \0, som markerar slutet på en sträng i C.

Det är inte siffran noll, utan ett speciellt, icke-utskrivbart tecken (ASCII-kod 0) som talar om för programmet var strängen slutar.

Note
Notera

Se alltid till att din teckenarray är ett element större än texten den innehåller för att rymma detta avslutningstecken.

Det är viktigt att förstå att 'x' och "x" inte är samma sak.

En sträng består av tecken. Kom alltid ihåg att avsluta en sträng med tecknet \0.

  • 'x' är helt enkelt en teckenkonstant av typen char;
  • "x" är en sträng, en array av char-värden, eller i detta fall, {'x', '\0'}.
Note
Notera

Blanda inte ihop '\0', '0' och "0". '\0' är nulltecknet (ASCII 0), '0' är siffran noll (ASCII 48), och "0" är en sträng som innehåller siffran noll plus terminatorn \0.

Strängutmatning

I C används specifikatorn %s för att visa strängar (arrayer av char-värden). Denna specifikator talar om för funktionen printf() vilken typ av information den ska förvänta sig. Genom att använda %s informerar vi printf()-funktionen om att den kommer att ta emot en sträng.

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; }

Språket C innehåller ett standardiserat bibliotek för stränghantering, <string.h>. I detta bibliotek finns en funktion som räknar antalet tecken i en sträng:

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
Notera

Kom ihåg, även ett mellanslag är ett tecken och kräver en egen plats i arrayen. Till exempel: char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }.

Genom att använda ett index kan du komma åt strängens element. Eftersom strängar i grunden är char-arrayer kan du även ändra enskilda tecken via deras index.

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; }
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 6
some-alt