Hoe lees je een string in C De programmeertaal C biedt geen echt stringgegevenstype. In C wordt een tekenreeks geëmuleerd door een reeks tekens die eindigt op NULL. Zo'n array kan statisch of als een pointer worden gedeclareerd. Standaard C biedt veel functies om tekenreeksen of C-reeksen te manipuleren. Dit artikel richt zich op de functies die lezen uit de invoerstroom en uit bestanden. Volg deze tips om te leren hoe u een tekenreeks in C kunt lezen.
Stap 1
Begrijp de basis. Een C-tekenreeks is een array van het type grafiek. Zoals bij alle C-arrays, wordt het eerste element geïndexeerd op 0 en het laatste op "lengte van tekenreeks min 1". Gewoonlijk voegt de compiler NULL in op de laatste locatie, zodat de string "lengte van string minus 1" kan bevatten elementen. Null is gelijk aan 0x00 in integer-vorm en '\0' in char-vorm. Elementen zijn toegankelijk via de "[]"-operator. Stap 2 illustreert deze concepten.
Video van de dag
Stap 2
Voeg de onderstaande "include-instructie" toe aan een bronbestand voordat u de functies van deze tutorial gebruikt:
#include < stdio.h >
Stap 3
Declareer een C-snaar. De onderstaande code toont een verklaring met behulp van de statische en de aanwijzermethode:
// statische declaratie char str [50] = {0}; // verkorte manier om alle elementen naar 0 te initialiseren // str [49] is NULL // str heeft een capaciteit van 48 tekens // declaratie door aanwijzer char pStr = NULL; // geen geheugentoewijzing pStr = (char) malloc (50); // dit wordt gedaan door "malloc()"
Stap 4
Lees gegevens in een C-tekenreeks met behulp van "scanf(),", die een reeks tekenreeksen leest, gescheiden door een spatie, van de standaard invoer en plaatst ze in de adressen die behoren tot de juiste referentievariabelen, volgens een "format" snaar":
int n; printf("Vul uw voornaam en leeftijd in: "); scanf("%s%d", str, &n); // printf("Je naam is %s en je bent %d oud\n", str, n);
Stap 5
Zet gegevens in een C-tekenreeks met behulp van de eenvoudigere "gets()"-functie, die gegevens van de standaardinvoer alleen in een tekenreeks leest:
printf("Vul je achternaam in: "); krijgt (str); printf("Uw naam is %s\n", str);
Stap 6
Lees bestandsgegevens in een C-string met "fscanf()"; deze functie is analoog aan "scanf()":
BESTAND* pBestand; pFile = fopen("mijnBestand.txt", "r"); // neem aan dat het bestand bestaat en gegevens bevat if (NULL != pFile) { fscanf (pFile, "%s", str); printf("Het eerste woord in het bestand is %s\n", str); fclose (pFile); }
Stap 7
Herhaal stap 5 met "fgets()", wat hetzelfde werkt als "gets()":
BESTAND* pBestand; pFile = fopen("mijnBestand.txt", "r"); if (NULL != pFile) { fgets (pFile, str); printf("Het eerste woord in het bestand is %s\n", str); fclose (pFile); }
Dingen die je nodig hebt
C/C++ IDE of C compiler
Boek over C, zoals "The C Programming Language" door Brian W. Kernighan
Tip
Bezoek de website van C Plus Plus voor meer informatie over de genoemde functies.
Waarschuwing
Probeer deze code niet te compileren. Het is alleen bedoeld om de functies te demonstreren. Het is geen coherent programma en geeft fouten bij het compileren.