Strings in C: Stringvariabelen declareren en initialiseren in C

Wat is String in C?

A Tekenreeks in C is niets anders dan een verzameling karakters in een lineaire volgorde. 'C' behandelt een string altijd als een enkel gegeven, ook al bevat deze spaties. Er wordt één teken gedefinieerd met behulp van de weergave met enkele aanhalingstekens. Een string wordt weergegeven met double aanhalingstekens.

Example, "Welcome to the world of programming!"

'C' biedt een standaardbibliotheek dat veel functies bevat die kunnen worden gebruikt om eenvoudig ingewikkelde bewerkingen uit te voeren op Strings in C.

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. Follo bestuderenwing 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 tekenarray te definiëren. Het kan in het volgendewing manier,

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 de tekenreeks in C op een uitvoerapparaat af te drukken en de cursor terug te verplaatsen naar de eerste positie. In het vervolg kan een puts-functie worden gebruiktwing manier,

#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

Bij C-programmeren kunnen we een reeks numerieke tekens omzetten naar een numerieke waarde om een ​​runtimefout te voorkomen. De stdio.h-bibliotheek bevat de following functies voor het converteren van een string naar een getal:

  • int atoi(str) Staat voor ASCII naar geheel getal; het 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 om te zweven, het converteert str naar het equivalent 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 lange gehele waarde. 0 wordt geretourneerd als het eerste teken geen getal is of als er geen getallen worden aangetroffen.

De following programma demonstreert de functie atoi():

#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.

Samengevat

  • Een string is een reeks tekens die zijn opgeslagen in een tekenarray.
  • Een string is een tekst die er tussen zit double 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.