Strings in C: Stringvariabelen declareren en initialiseren in C
Wat is String in C?
A Tekenreeks in C is niets anders dan een verzameling tekens in een lineaire volgorde. 'C' behandelt een string altijd als een enkel gegeven, ook al bevat het spaties. Een enkel teken wordt gedefinieerd met behulp van enkele aanhalingstekens. Een string wordt weergegeven met behulp van dubbele aanhalingstekens.
Example, "Welcome to the world of programming!"
'C' biedt een standaardbibliotheek dat veel functies bevat waarmee ingewikkelde bewerkingen eenvoudig op Strings in C kunnen worden uitgevoerd.
Hoe een string in C declareren?
AC String is een eenvoudige array met char als gegevenstype. 'C'-taal ondersteunt string niet rechtstreeks als gegevenstype. Om een String in C weer te geven, moet je dus gebruik maken van een karakterarray.
De algemene syntaxis voor het declareren van een variabele als een String in C is als volgt:
char string_variable_name [array_size];
De klassieke Verklaring van strings kan als volgt worden gedaan:
char string_name[string_length] = "string";
De grootte van een array moet worden gedefinieerd tijdens het declareren van een C String-variabele, omdat deze wordt gebruikt om te berekenen hoeveel tekens er in de stringvariabele in C zullen worden opgeslagen. Enkele geldige voorbeelden van stringdeclaratie zijn als volgt:
char first_name[15]; //declaration of a string variable char last_name[15];
Het bovenstaande voorbeeld vertegenwoordigt stringvariabelen met een arraygrootte van 15. Dit betekent dat de gegeven C-stringarray maximaal 15 tekens kan bevatten. Het indexeren van de array begint vanaf 0 en slaat daarom tekens op van een positie van 0-14. De C-compiler voegt automatisch een NULL-teken '\0' toe aan de gemaakte tekenarray.
Hoe initialiseer je een string in C?
Laten we de String-initialisatie in C bestuderen. Het volgende voorbeeld demonstreert de initialisatie van Strings in C:
char first_name[15] = "ANTHONY"; char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declaration char string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */ char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */ char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/
In string3 moet het NULL-teken expliciet worden toegevoegd en staan de tekens tussen enkele aanhalingstekens.
Met 'C' kunnen we ook a initialiseren string variabele zonder de grootte van de tekenreeks te definiëren. Het kan op de volgende manier worden gedaan,
char first_name[ ] = "NATHAN";
De naam van Strings in C fungeert als een pointer omdat het in feite een array is.
C String-invoer: C-programma om string te lezen
Bij het schrijven van interactieve programma's die de gebruiker om invoer vragen, biedt C de functies scanf(), get() en fgets() om een regel tekst te vinden die door de gebruiker is ingevoerd.
Wanneer we scanf() gebruiken om te lezen, gebruiken we de formaatspecificatie “%s” zonder de “&” te gebruiken om toegang te krijgen tot het variabele adres, omdat een arraynaam als aanwijzer fungeert.
Bijvoorbeeld:
#include <stdio.h> int main() { char name[10]; int age; printf("Enter your first name and age: \n"); scanf("%s %d", name, &age); printf("You entered: %s %d",name,age); }
Output:
Enter your first name and age: John_Smith 48
Het probleem met de scanf-functie is dat deze nooit hele strings in C leest. Het stopt het leesproces zodra witruimte, formulierfeed, verticale tab, nieuwe regel of een harde return optreedt. Stel dat we invoer geven als “Guru99 Tutorials”, dan zal de scanf-functie nooit een hele string lezen, omdat er een witruimte tussen de twee namen voorkomt. De scanf-functie leest alleen Guru99.
Om te lezen dat een string spaties bevat, gebruiken we de functie get(). Gets negeert de witruimten. Het stopt
lezen wanneer een nieuwe regel wordt bereikt (de Enter-toets wordt ingedrukt).
Bijvoorbeeld:
#include <stdio.h> int main() { char full_name[25]; printf("Enter your full name: "); gets(full_name); printf("My full name is %s ",full_name); return 0; }
Output:
Enter your full name: Dennis Ritchie My full name is Dennis Ritchie
Een ander veiliger alternatief voor get() is de functie fgets() die een bepaald aantal tekens leest.
Bijvoorbeeld:
#include <stdio.h> int main() { char name[10]; printf("Enter your name plz: "); fgets(name, 10, stdin); printf("My name is %s ",name); return 0;}
Output:
Enter your name plz: Carlos My name is Carlos
De fgets() argumenten zijn:
- de stringnaam,
- het aantal te lezen tekens,
- stdin betekent lezen van de standaardinvoer, namelijk het toetsenbord.
C String-uitvoer: C-programma om een string af te drukken
De standaard printf-functie wordt gebruikt voor het afdrukken of weergeven van strings in C op een uitvoerapparaat. De gebruikte formaatspecificatie is %s
Voorbeeld,
printf("%s", name);
Tekenreeksuitvoer wordt gedaan met de functies fputs() en printf().
fputs() functie
De fputs() heeft de naam van de string nodig en een verwijzing naar waar u de tekst wilt weergeven. We gebruiken stdout, wat verwijst naar de standaarduitvoer om op het scherm af te drukken.
Bijvoorbeeld:
#include <stdio.h> int main() {char town[40]; printf("Enter your town: "); gets(town); fputs(town, stdout); return 0;}
Output:
Enter your town: New York New York
zet functie
De puts-functie wordt gebruikt om een string in C op een uitvoerapparaat af te drukken en de cursor terug te verplaatsen naar de eerste positie. Een puts-functie kan op de volgende manier worden gebruikt,
#include <stdio.h> int main() { char name[15]; gets(name); //reads a string puts(name); //displays a string return 0;}
De syntaxis van deze functie is relatief eenvoudig dan die van andere functies.
De tekenreeksbibliotheek
De standaard 'C'-bibliotheek biedt verschillende functies om de strings binnen een programma te manipuleren. Deze functies worden ook wel stringhandlers genoemd. Al deze begeleiders zijn binnen aanwezig header-bestand.
Functie | Doel |
---|---|
strlen() | Deze functie wordt gebruikt om de lengte van een string te vinden. Het retourneert hoeveel tekens er in een string aanwezig zijn, met uitzondering van het NULL-teken. |
strcat(str1, str2) | Deze functie wordt gebruikt om twee strings samen te voegen tot één enkele string. Het voegt str2 toe of voegt deze samen aan het einde van str1 en retourneert een verwijzing naar str1. |
strcmp(str1, str2) | Deze functie wordt gebruikt om twee strings met elkaar te vergelijken. Het retourneert 0 als str1 gelijk is aan str2, kleiner dan 0 als str1 < str2, en groter dan 0 als str1 > str2. |
Laten we eens kijken naar het onderstaande programma dat stringbibliotheekfuncties demonstreert:
#include <stdio.h> #include <string.h> int main () { //string initialization char string1[15]="Hello"; char string2[15]=" World!"; char string3[15]; int val; //string comparison val= strcmp(string1,string2); if(val==0){ printf("Strings are equal\n"); } else{ printf("Strings are not equal\n"); } //string concatenation printf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world! //string length printf("\nLength of first string:%d",strlen(string1)); printf("\nLength of second string:%d",strlen(string2)); //string copy printf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3 return 0; }
Output:
Strings are not equal Concatenated string:Hello World! Length of first string:12 Length of second string:7 Copied string is:Hello World!
Andere belangrijke bibliotheekfuncties zijn:
- strncmp(str1, str2, n) : het retourneert 0 als de eerste n tekens van str1 gelijk zijn aan de eerste n tekens van str2, kleiner dan 0 als str1 < str2, en groter dan 0 als str1 > str2.
- strncpy(str1, str2, n) Deze functie wordt gebruikt om een string uit een andere string te kopiëren. Kopieert de eerste n tekens van str2 naar str1
- strchr(str1, c): het retourneert een verwijzing naar de eerste keer dat char c voorkomt in str1, of NULL als het teken niet wordt gevonden.
- strrchr(str1, c): het doorzoekt str1 omgekeerd en retourneert een pointer naar de positie van char c in str1, of NULL als het karakter niet gevonden wordt.
- strstr(str1, str2): het retourneert een verwijzing naar de eerste keer dat str2 voorkomt in str1, of NULL als str2 niet wordt gevonden.
- strncat(str1, str2, n) Voegt de eerste n tekens van str2 toe (aaneengeschakeld) aan het einde van str1 en retourneert een verwijzing naar str1.
- strlwr() :om de tekenreeks naar kleine letters te converteren
- strupr() :om de tekenreeks naar hoofdletters te converteren
- strrev() : om de tekenreeks om te keren
Een tekenreeks naar een getal converteren
In C-programmering kunnen we een string van numerieke tekens omzetten naar een numerieke waarde om een runtime-fout te voorkomen. De stdio.h-bibliotheek bevat de volgende functies voor het omzetten van een string naar een getal:
- int atoi(str) Staat voor ASCII naar integer; converteert str naar de equivalente int-waarde. 0 wordt geretourneerd als het eerste teken geen getal is of als er geen getallen worden aangetroffen.
- double atof(str) Staat voor ASCII naar float, converteert str naar de equivalente double-waarde. 0.0 wordt geretourneerd als het eerste teken geen getal is of als er geen getallen worden aangetroffen.
- long int atol(str) Staat voor ASCII naar long int. Converteert str naar de equivalente long integer-waarde. 0 wordt geretourneerd als het eerste teken geen getal is of als er geen getallen worden aangetroffen.
Het volgende programma demonstreert de atoi()-functie:
#include <stdio.h> int main() {char *string_id[10]; int ID; printf("Enter a number: "); gets(string_id); ID = atoi(string_id); printf("you enter %d ",ID); return 0;}
Output:
Enter a number: 221348 you enter 221348
- Een string pointer-declaratie zoals char *string = “taal” is een constante en kan niet worden gewijzigd.
Samenvatting
- Een string is een reeks tekens die zijn opgeslagen in een tekenarray.
- Een string is een tekst tussen dubbele aanhalingstekens.
- Een teken zoals 'd' is geen string en wordt aangegeven met enkele aanhalingstekens.
- 'C' biedt standaard bibliotheekfuncties om strings in een programma te manipuleren. Stringmanipulatoren worden opgeslagen in header-bestand.
- Een string moet worden gedeclareerd of geïnitialiseerd voordat deze in een programma kan worden gebruikt.
- Er zijn verschillende invoer- en uitvoerreeksfuncties, elk heeft zijn eigen kenmerken.
- Vergeet niet de tekenreeksbibliotheek op te nemen om met zijn functies te werken
- We kunnen string naar getal converteren via de atoi(), atof() en atol() die erg handig zijn voor codeer- en decodeerprocessen.
- We kunnen verschillende strings manipuleren door een array van strings in C te definiëren.