C Strings Makkelijk Gemaakt: Declaratie, Invoer, Uitvoer en Bibliotheekfuncties
Wat is een String in C?
Een string in C is een opeenvolgende reeks karakters beëindigd door het null-teken (\0). Hoewel de taal geen toegewijde string-type heeft, wordt een string meestal voorgesteld als een array van char-waarden. De compiler voegt de null-terminator automatisch toe wanneer je een string-literal initialiseert.
"Welkom in de wereld van programmeren!"
De standaardbibliotheek-header <string.h> biedt een schat aan functies voor efficiënte stringmanipulatie.
Strings Declareren en Initialiseren
Omdat C een string behandelt als een karakterarray, moet je de array-grootte specificeren. De grootte definieert het maximum aantal karakters (exclusief de null-terminator) dat opgeslagen kan worden.
char string_variabele_naam[array_grootte];
Typische declaraties:
char voornaam[15]; /* houdt maximaal 14 karakters + \0 */ char achternaam[15];
Wanneer je een initialisator geeft, telt de compiler de karakters en voegt automatisch de null-terminator toe. De array-grootte mag weggelaten worden als je een initialisator geeft.
char voornaam[15] = "ANTHONY";
char voornaam[] = "NATHAN"; /* grootte afgeleid */
char string3[6] = {'h','e','l','l','o','\0'}; /* expliciete terminator */
Strings Lezen van de Gebruiker
Invoervuncties variëren in veiligheid en gedrag:
scanf("%s", naam)leest tot witruimte, maar is kwetsbaar voor bufferoverloop.gets()leest een volledige regel, maar is onveilig en verwijderd in C11.fgets(naam, grootte, stdin)leest maximaalgrootte-1karakters, laat ruimte voor de null-terminator.
Voorbeeld met fgets:
#include <stdio.h>
int main() {
char naam[50];
printf("Voer uw volledige naam in: ");
fgets(naam, sizeof(naam), stdin);
printf("Uw naam is %s", naam);
return 0;
}
Strings Printen
De klassieke manier om een string weer te geven is printf("%s", naam);. Twee handige alternatieven zijn:
fputs(naam, stdout)– schrijft direct naar de uitvoerstroom.puts(naam)– schrijft de string gevolgd door een newline.
Voorbeeld met puts:
#include <stdio.h>
int main() {
char groet[] = "Hallo, wereld!";
puts(groet);
return 0;
}
De String-bibliotheek (<string.h>)
Veelgebruikte functies:
| Functie | Beschrijving |
|---|---|
| strlen | Geeft de lengte van een string (exclusief null-terminator). |
| strcat | Voegt één string toe aan een andere. |
| strcmp | Vergelijkt twee strings lexicografisch. |
| strcpy | Kopieert een string. |
| strncmp | Vergelijkt tot n karakters. |
| strncpy | Kopieert tot n karakters. |
| strchr | Vindt de eerste voorkomen van een karakter. |
| strrchr | Vindt de laatste voorkomen van een karakter. |
| strstr | Vindt een substring. |
| strncat | Concateneert tot n karakters. |
| strlwr | Converteert naar kleine letters (niet-standaard). |
| strupr | Converteert naar hoofdletters (niet-standaard). |
| strrev | Keert een string om (niet-standaard). |
Illustratief programma:
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hallo";
char str2[20] = " Wereld!";
char resultaat[40];
/* Vergelijking */
if (strcmp(str1, str2) == 0) puts("Strings zijn gelijk");
else puts("Strings zijn niet gelijk");
/* Concatenatie */
strcat(str1, str2); // str1 bevat nu "Hallo Wereld!"
printf("Geconcateneerd: %s\n", str1);
/* Lengte */
printf("Lengte van str1: %zu\n", strlen(str1));
/* Kopiëren */
strcpy(resultaat, str1);
printf("Gekopieerde string: %s\n", resultaat);
return 0;
}
Een String Converteren naar een Getal
Standaard conversies:
atoi– converteert naarint.atof– converteert naardouble.atol– converteert naarlong.
Voorbeeld met atoi:
#include <stdio.h>
#include <stdlib.h>
int main() {
char getal_str[20];
printf("Voer een getal in: ");
fgets(getal_str, sizeof(getal_str), stdin);
int num = atoi(getal_str);
printf("Je hebt %d ingevoerd\n", num);
return 0;
}
Belangrijkste Inzichten
- Een string is een reeks karakters opgeslagen in een
char-array beëindigd door \0. - Declareer de array-grootte vóór gebruik, of laat de compiler deze afleiden bij initialisatie.
- Gebruik
fgetsvoor veilige invoer; vermijdgetsenscanf("%s")zonder bounds-checking. - Benut
<string.h>voor robuuste stringoperaties. - Converteer string-getallen met
atoi,atofofatolom runtime-fouten te voorkomen. - Onthoud dat string-literalen read-only zijn; ze wijzigen leidt tot ongedefinieerd gedrag.
C Taal
- C++ Arrays Ontmaskerd: Declaratie, Initialisatie en Pointer‑Technieken
- C++ String‑Functies Beheersen: strcpy, strcat, strlen, strcmp – Praktische Voorbeelden
- realloc() in C gebruiken: Syntaxis, best practices & voorbeeld
- Beheersing van C's free() functie: Praktische gids & voorbeeld
- Strings in C# Beheersen: Best Practices & Tips
- Dynamische string-lijsten in VHDL: Best Practices & Voorbeeld
- Python-stringoperaties beheersen: Replace, Join, Split, Reverse en case-conversie
- Java Strings beheersen: aanmaken, methodes en best practices
- String representaties in Java Enums meesteren
- Java String length() Methode: Hoe de grootte van een String op te vragen (Voorbeeld)
- Java Strings Class: String Creatie & Manipulatie Onder de Knie