Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

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

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 data, ook al bevat het spaties. Een enkel teken wordt gedefinieerd met behulp van enkele aanhalingstekens. Een string 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-

  • Een string declareren en initialiseren in C
  • Tekenreeksinvoer:een tekenreeks lezen
  • Tekenreeksuitvoer:een tekenreeks afdrukken/weergeven
  • fputs() functie
  • zet functie
  • De tekenreeksbibliotheek
  • Een tekenreeks converteren naar een getal

Hoe een string in C declareren en initialiseren

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

De algemene syntaxis voor het declareren van een variabele als een tekenreeks 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 worden opgeslagen in de stringvariabele in C. 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. De indexering van de array begint bij 0 en zal daarom tekens opslaan 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 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 de tekens worden tussen enkele aanhalingstekens geplaatst.

Met 'C' kunnen we ook een tekenreeksvariabele 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 aanwijzer omdat het in feite een array is.

Tekenreeksinvoer:lees een tekenreeks

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 "%s"-indelingsspecificatie zonder de "&" te gebruiken om toegang te krijgen tot het variabeleadres, omdat een arraynaam als een 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);
}

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, formulierinvoer, 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 spatie tussen de twee namen staat. De scanf-functie leest alleen Guru99.

Om te lezen dat een string spaties bevat, gebruiken we de get()-functie. Gets negeert de spaties. Het stopt met 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;
}

Uitgang:

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

Een ander veiliger alternatief voor gets() 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;}

Uitgang:

Enter your name plz: Carlos
My name is Carlos

De fgets()-argumenten zijn:

  • de naam van de tekenreeks,
  • het aantal tekens dat moet worden gelezen,
  • stdin betekent lezen van de standaardinvoer die het toetsenbord is.

Tekenreeksuitvoer:een tekenreeks 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);

String-uitvoer wordt gedaan met de functies fputs() en printf().

fputs() functie

De fputs() heeft de naam van de tekenreeks nodig en een aanwijzer naar waar u de tekst wilt weergeven. We gebruiken stdout, wat verwijst naar de standaarduitvoer om naar 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;}

Uitgang:

Enter your town: New York
New York

zet functie

De puts-functie wordt gebruikt om een ​​tekenreeks in C op een uitvoerapparaat af te drukken en de cursor terug naar de eerste positie te verplaatsen. 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 string-handlers genoemd. Al deze handlers zijn aanwezig in het headerbestand.

Functie Doel strlen() Deze functie wordt gebruikt om de lengte van een string te vinden. Het geeft het aantal tekens terug dat aanwezig is in een tekenreeks met uitzondering van het NULL-teken.strcat(str1, str2) Deze functie wordt gebruikt om twee strings samen te voegen tot een enkele string. Het voegt str2 toe 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 geeft 0 terug als str1 gelijk is aan str2, kleiner dan 0 als str1 str2.

Laten we eens kijken naar het onderstaande programma dat tekenreeksbibliotheekfuncties 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;
}

Uitgang:

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.
  • strncpy(str1, str2, n) Deze functie wordt gebruikt om een ​​string van een andere string te kopiëren. Kopieert de eerste n karakters van str2 naar str1
  • strchr(str1, c):het retourneert een pointer naar het eerste voorkomen van char c in str1, of NULL als het teken niet wordt gevonden.
  • strrchr(str1, c):het zoekt in omgekeerde richting naar str1 en geeft een pointer terug naar de positie van char c in str1, of NULL als het teken niet wordt gevonden.
  • strstr(str1, str2):het geeft een pointer terug naar het eerste voorkomen van str2 in str1, of NULL als str2 niet gevonden is.
  • strncat(str1, str2, n) Voegt (samengevoegd) de 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 string naar hoofdletters te converteren
  • strrev() :om string om te keren

Een tekenreeks converteren naar een getal

In 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 tekenreeks 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 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 integerwaarde. 0 wordt geretourneerd als het eerste teken geen getal is of als er geen getallen worden aangetroffen.

Het volgende 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;}

Uitgang:

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

Samenvatting

  • 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 met enkele aanhalingstekens.
  • 'C' biedt standaard bibliotheekfuncties om strings in een programma te manipuleren. String-manipulatoren worden opgeslagen in het -headerbestand.
  • Een tekenreeks moet worden gedeclareerd of geïnitialiseerd voordat deze in een programma wordt gebruikt.
  • Er zijn verschillende invoer- en uitvoertekenreeksfuncties, elk daarvan heeft zijn kenmerken.
  • Vergeet niet de tekenreeksbibliotheek op te nemen om met zijn functies te werken
  • We kunnen tekenreeksen naar getallen converteren via de atoi(), atof() en atol() die erg handig zijn voor coderings- en decoderingsprocessen.
  • We kunnen verschillende strings manipuleren door een array van strings in C te definiëren.

C Taal

  1. Java-strings
  2. Java enum Strings
  3. Een lijst met strings maken in VHDL
  4. Arrays in C++ | Verklaren | Initialiseren | Aanwijzer naar matrixvoorbeelden
  5. C++ Strings:strcpy(), strcat(), strlen(), strcmp() VOORBEELDEN
  6. realloc() Functie in C Library:Hoe te gebruiken? Syntaxis en voorbeeld
  7. free() Functie in C-bibliotheek:Hoe te gebruiken? Leer met voorbeeld
  8. String Length() Methode in Java:Hoe te vinden met Voorbeeld
  9. Python-strings:vervangen, samenvoegen, splitsen, omkeren, hoofdletters en kleine letters
  10. Java - Strings-klasse
  11. C# - Strings