Strings in C: Variabele declareren, initialiseren, afdrukken, voorbeeld

Inhoudsopgave:

Anonim

Wat is String in C?

Een string in C is niets anders dan een verzameling karakters in een lineaire volgorde. 'C' behandelt een string altijd als een enkele gegevens, ook al bevat deze spaties. Een enkel teken wordt gedefinieerd met behulp van enkele aanhalingstekens. Een tekenreeks wordt weergegeven met dubbele aanhalingstekens.

Example, "Welcome to the world of programming!"

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

In deze tutorial leer je-

  • Hoe een string in C te declareren en te initialiseren
  • Stringinvoer: lees een string
  • Stringuitvoer: een string afdrukken / weergeven
    • fputs () functie
    • zet functie
  • De stringbibliotheek
  • Een string omzetten in een getal

Hoe een string in C te declareren en te initialiseren

AC String is een eenvoudige array met char als gegevenstype. 'C'-taal ondersteunt tekenreeks niet rechtstreeks als gegevenstype. Om een ​​tekenreeks in C weer te geven, moet u daarom een ​​tekenreeks gebruiken.

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 Declaration of 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 worden opgeslagen. Enkele geldige voorbeelden van string-declaratie zijn als volgt,

char first_name[15]; //declaration of a string variablechar 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. De indexering van de array begint bij 0 en slaat dus tekens op van een 0-14 positie. De C-compiler voegt automatisch een NULL-teken '\ 0' toe aan de gecreëerde tekenreeks.

Laten we de String-initialisatie in C bestuderen. Het volgende voorbeeld toont 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 declarationchar 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 de tekens worden tussen enkele aanhalingstekens geplaatst.

Met 'C' kunnen we ook een stringvariabele initialiseren 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.

Stringinvoer: lees een string

Bij het schrijven van interactieve programma's die de gebruiker om invoer vragen, biedt C de functies scanf (), gets () en fgets () om een ​​regel tekst te vinden die door de gebruiker is ingevoerd.

Wanneer we scanf () gebruiken om te lezen, gebruiken we de "% s" formaatspecificatie zonder de "&" te gebruiken om toegang te krijgen tot het variabele adres, omdat een arraynaam als een pointer fungeert. Bijvoorbeeld:

#include 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);}

Uitgang:

Enter your first name and age:John_Smith 48

Het probleem met de scanf-functie is dat het nooit hele strings in C leest. Het zal het leesproces stoppen zodra witruimte, form feed, verticale tab, nieuwe regel of een regelterugloop 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 gets (). Gets negeert de witruimten. Het stopt met lezen wanneer een nieuwe regel wordt bereikt (de Enter-toets wordt ingedrukt) .Bijvoorbeeld:

#include int main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}

Uitgang:

Enter your full name: Dennis RitchieMy full name is Dennis Ritchie

Een ander veiliger alternatief voor gets () is de functie fgets () die een bepaald aantal tekens leest. Bijvoorbeeld:

#include int main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}

Uitgang:

Enter your name plz: CarlosMy name is Carlos

De fgets () -argumenten zijn:

  • de naam van de string,
  • het aantal te lezen karakters,
  • stdin betekent lezen van de standaardinvoer die het toetsenbord is.

Stringuitvoer: een string afdrukken / weergeven

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);

Stringuitvoer wordt gedaan met de functies fputs () en printf ().

fputs () functie

De fputs () heeft de naam van de string nodig en een pointer naar waar je de tekst wilt weergeven. We gebruiken stdout, wat verwijst naar de standaarduitvoer om op het scherm af te drukken, bijvoorbeeld:

#include int main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}

Uitgang:

Enter your town: New YorkNew York

zet functie

De put-functie wordt gebruikt om tekenreeks in C op een uitvoerapparaat af te drukken en de cursor terug naar de eerste positie te verplaatsen. Een put-functie kan op de volgende manier worden gebruikt,

#include int main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}

De syntaxis van deze functie is relatief eenvoudig dan bij andere functies.

De stringbibliotheek

De standaard 'C'-bibliotheek biedt verschillende functies om de strings binnen een programma te manipuleren. Deze functies worden ook wel stringhandlers genoemd. Al deze handlers zijn aanwezig in het header-bestand.

Functie Doel
strlen () Deze functie wordt gebruikt om de lengte van een string te vinden. Het geeft terug hoeveel tekens aanwezig zijn in een tekenreeks, met uitzondering van het NULL-teken.
strcat (str1, str2) Deze functie wordt gebruikt om twee strings samen te combineren om een ​​enkele string te vormen. Het voegt str2 toe aan of voegt het samen aan het einde van str1 en retourneert een pointer 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.

Laten we eens kijken naar het onderstaande programma dat stringbibliotheekfuncties demonstreert:

#include #include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}

Uitgang:

Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied 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.
  • 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 pointer naar het eerste exemplaar van teken c in str1, of NULL als teken niet wordt gevonden.
  • strrchr (str1, c): het zoekt str1 in omgekeerde volgorde en geeft een pointer terug naar de positie van teken c in str1, of NULL als het teken niet wordt gevonden.
  • strstr (str1, str2): het retourneert een pointer naar de eerste keer dat str2 voorkomt in str1, of NULL als str2 niet wordt gevonden.
  • strncat (str1, str2, n) Voegt (concatenates) eerste n karakters van str2 toe aan het einde van str1 en retourneert een pointer naar str1.
  • strlwr (): om tekenreeks naar kleine letters te converteren
  • strupr (): om tekenreeks naar hoofdletters te converteren
  • strrev (): om tekenreeks om te keren

Een string omzetten in een getal

Bij C-programmering kunnen we een reeks numerieke tekens converteren naar een numerieke waarde om een ​​runtime-fout te voorkomen. De stdio.h-bibliotheek bevat de volgende functies voor het converteren van een string naar een getal:

  • int atoi (str) Staat voor ASCII naar integer; 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 de equivalente dubbele 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.

Het volgende programma demonstreert de atoi () -functie:

#include 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;}

Uitgang:

Enter a number: 221348you enter 221348
  • Een string pointer-declaratie zoals char * string = "language" is een constante en kan niet worden gewijzigd.

Overzicht

  • Een tekenreeks is een reeks tekens die is opgeslagen in een tekenreeks.
  • Een string is een tekst tussen dubbele aanhalingstekens.
  • Een teken zoals 'd' is geen tekenreeks en wordt aangegeven door enkele aanhalingstekens.
  • 'C' biedt standaard bibliotheekfuncties om strings in een programma te manipuleren. Stringmanipulators worden opgeslagen in header-bestand.
  • Een string moet worden gedeclareerd of geïnitialiseerd voordat deze in een programma wordt gebruikt.
  • Er zijn verschillende invoer- en uitvoerstringfuncties, elk heeft zijn eigen kenmerken.
  • Vergeet niet om de stringbibliotheek 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 coderings- en decoderingsprocessen.
  • We kunnen verschillende strings manipuleren door een reeks strings in C te definiëren.