Programmeringsspråket C

char-typen

char

Tidigare har vi använt endast en variabeltyp, int, som kan lagra heltal. Det finns en till typ som är tänkt för att lagra bokstäver, nämligen char. Den kan lagra enstaka tecken. Till exempel som nedan.

#include <stdio.h>
 
int main() {
    char enbokstav = 'A';
    
    printf("%c\n", enbokstav);
 
    return 0;
}

Här finns några grejer att tänka på. I initialiseringen sätter vi variabeln att anta värdet 'A'. Apostroferna är viktiga. De talar om för kompilatorn att här kommer en bokstav. Om du känner till något som helst om hur datorer hanterar bokstäver så har du säkert hört talas om ASCII. Det är en standard för att omvandla siffror till bokstäver och vice versa. Till exempel siffran 65 motsvarar våran bokstav 'A'. Så när vi skriver 'A' i programmet översätter kompilatorn helt enkelt det till 65. Följande kodsnutt funkar lika bra som den förra.

#include <stdio.h>
 
int main() {
    char enbokstav = 65;
    
    printf("%c\n", enbokstav);
 
    return 0;
}

Dessa två kodsnuttar vi visat är, efter kompilering, identiska. Det är det som menas med att char faktiskt är en heltalstyp, precis som int. Man kan använda en char precis som en int, även om kompilatorn ibland klagar, eftersom en char rymmer mycket färre tal än en int. Det är också anledningen till att en int i vissa fall inte går att använda som en char.

Det andra nya är användningen av %c i printf(). Det är samma sak som %i, fast för bokstäver.

Något fascinerande med char till int-ersättningen är att man kan göra som följande om man vill loopa igenom alla små bokstäver i engelska alfabetet.

char bokstav;
for (bokstav = 'a'; bokstav <= 'z'; bokstav++) {
    putchar(bokstav);
}

Detta fungerar eftersom i ASCII är det engelska alfabetet lagrat som en enda lång följd. För att ta reda på sånt kan det vara bra att ha en ASCII-tabell i närheten när man programmerar. I denna kodsnutt använde vi även en ny funktion, putchar(). Inom parenteserna tar den ett enstaka tecken som argument. Aldrig flera.

Det är också väldigt viktigt att kunna skilja på enskilda tecken (char) som 'g' eller '#' inom apostrofer och strängar "en lång följd av tecken inom citattecken". Vi kommer behandla strängar i nästa del. C-strängar är tekniskt sett en array av chars, så se till att du har koll på både arrays och chars innan nästa del.

← Arrays

Strängar →

Copyleft kqr & slaeshjag 2009, 2012 some rights reserved