C-strings: Hoe null-getermineerde karakterarrays werken
Wat is een C-string?
Een string in C is een eendimensionale array van char die eindigt met een null-karakter '\0'. De lengte van de string is het aantal karakters voor de null-terminator.
Declaratie en initialisatie
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Korter (compiler voegt \0 toe):
char greeting[] = "Hello";
Geheugenweergave:
Index: 0 1 2 3 4 5 Char: H e l l o \0
String afdrukken
#include <stdio.h>
int main() {
char greeting[] = "Hello";
printf("Groet: %s\n", greeting);
return 0;
}
Standaard string-functies (<string.h>)
| Functie | Doel |
|---|---|
strcpy(dest, src) | Kopieer src naar dest |
strncpy(dest, src, n) | Kopieer max n karakters (veiliger) |
strcat(dest, src) | Voeg src toe aan dest |
strncat(dest, src, n) | Voeg max n karakters toe |
strlen(str) | Lengte (excl. \0) |
strcmp(s1, s2) | Vergelijk: 0=gelijk, <0 s1<s2, >0 s1>s2 |
strncmp(s1, s2, n) | Vergelijk eerste n karakters |
strchr(str, ch) | Eerste voorkomen van ch |
strrchr(str, ch) | Laatste voorkomen van ch |
strstr(haystack, needle) | Eerste voorkomen van substring |
Voorbeeld
#include <stdio.h>
#include <string.h>
int main() {
char str1[12] = "Hello";
char str2[12] = "World";
char str3[12];
int len;
strcpy(str3, str1);
printf("strcpy: %s\n", str3); // Hello
strcat(str1, str2);
printf("strcat: %s\n", str1); // HelloWorld
len = strlen(str1);
printf("strlen: %d\n", len); // 10
return 0;
}
Belangrijke aandachtspunten
- Geen grenscontrole –
strcpy,strcatkunnen buffer overflow veroorzaken. Gebruikstrncpy,strncatofsnprintf. - Const correctheid –
const char *svoor read-only strings (string literals). - Modificeer geen string literals –
char *s = "Hello"; s[0] = 'h';→ ongedefinieerd gedrag. - Lengte berekenen –
strlenis O(n). Sla lengte op als je hem vaak nodig hebt.
String invoer
char buffer[100]; fgets(buffer, sizeof(buffer), stdin); // leest hele regel incl. newline // verwijder eventueel trailing newline: buffer[strcspn(buffer, "\n")] = '\0';
gets() is verouderd en onveilig – nooit gebruiken!
C Taal
- C# Strings: Fundamentals, Operaties & Geavanceerde Technieken
- C++ String‑Functies Beheersen: strcpy, strcat, strlen, strcmp – Praktische Voorbeelden
- C Strings Makkelijk Gemaakt: Declaratie, Invoer, Uitvoer en Bibliotheekfuncties
- Dynamische string-lijsten in VHDL: Best Practices & Voorbeeld
- Python-stringoperaties beheersen: Replace, Join, Split, Reverse en case-conversie
- Python's str.count() beheersen: Karakters & substrings tellen met voorbeelden
- Java Strings beheersen: aanmaken, methodes en best practices
- String representaties in Java Enums meesteren
- Java String.charAt() begrijpen: Syntaxis, Retourtype, Exceptions en Praktisch Voorbeeld
- Java String.endsWith() beheersen: Controleren op String-suffixen met voorbeelden
- Java Strings Class: String Creatie & Manipulatie Onder de Knie