Strings in C: So deklarieren und initialisieren Sie String-Variablen in C

Was ist String in C?

A Zeichenfolge in C ist nichts anderes als eine Sammlung von Zeichen in einer linearen Sequenz. โ€žCโ€œ behandelt einen String immer als einzelne Daten, auch wenn er Leerzeichen enthรคlt. Ein einzelnes Zeichen wird durch einfache Anfรผhrungszeichen definiert. Ein String wird durch doppelte Anfรผhrungszeichen dargestellt.

Example, "Welcome to the world of programming!"

'C' stellt eine Standardbibliothek bereit das viele Funktionen enthรคlt, mit denen sich komplizierte Operationen einfach an Zeichenfolgen in C durchfรผhren lassen.

Wie deklariere ich einen String in C?

AC String ist ein einfaches Array mit char als Datentyp. 'C Sprache unterstรผtzt String als Datentyp nicht direkt. Um einen String in C anzuzeigen, mรผssen Sie daher ein Zeichenarray verwenden.

Die allgemeine Syntax zum Deklarieren einer Variablen als String in C lautet wie folgt:

char string_variable_name [array_size];

Die klassische Deklaration von Strings kann wie folgt erfolgen:

 char string_name[string_length] = "string";

Die GrรถรŸe eines Arrays muss beim Deklarieren einer C-String-Variablen definiert werden, da sie zur Berechnung der Anzahl der Zeichen verwendet wird, die in der String-Variablen in C gespeichert werden. Einige gรผltige Beispiele fรผr die String-Deklaration sind wie folgt:

char first_name[15];    //declaration of a string variable
char last_name[15];

Das obige Beispiel stellt String-Variablen mit einer Array-GrรถรŸe von 15 dar. Dies bedeutet, dass das gegebene C-String-Array hรถchstens 15 Zeichen aufnehmen kann. Die Indizierung des Arrays beginnt bei 0, daher werden Zeichen von der Position 0 bis 14 gespeichert. Der C-Compiler fรผgt dem erstellten Zeichenarray automatisch ein NULL-Zeichen โ€ž\0โ€œ hinzu.

Wie initialisiere ich einen String in C?

Lassen Sie uns die String-Initialisierung in C untersuchen. Das folgende Beispiel demonstriert die Initialisierung von 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 muss das NULL-Zeichen explizit hinzugefรผgt werden und die Zeichen werden in einfache Anfรผhrungszeichen gesetzt.

Mit โ€žCโ€œ kรถnnen wir auch a initialisieren String-Variable ohne die GrรถรŸe des Zeichenarrays zu definieren. Dies kann folgendermaรŸen erfolgen:

char first_name[ ] = "NATHAN";

Der Name von Strings in C fungiert als Zeiger, da es sich im Grunde um ein Array handelt.

C-String-Eingabe: C-Programm zum Lesen des Strings

Beim Schreiben interaktiver Programme, die den Benutzer zur Eingabe auffordern, stellt C die Funktionen scanf(), gets() und fgets() bereit, um eine vom Benutzer eingegebene Textzeile zu finden.

Wenn wir scanf() zum Lesen verwenden, verwenden wir den Formatbezeichner โ€ž%sโ€œ, ohne das โ€ž&โ€œ fรผr den Zugriff auf die Variablenadresse zu verwenden, da ein Array-Name als Zeiger fungiert.
Beispielsweise:

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

Ausgang:

Enter your first name and age:
John_Smith 48

Das Problem mit der Scanf-Funktion besteht darin, dass sie niemals ganze Strings in C liest. Sie stoppt den Lesevorgang, sobald Leerzeichen, Seitenvorschub, vertikale Tabulatortaste, Zeilenumbruch oder Wagenrรผcklauf auftreten. Angenommen, wir geben die Eingabe โ€žGuru99 Tutorialsโ€œ ein, dann liest die Scanf-Funktion niemals eine ganze Zeichenfolge, da zwischen den beiden Namen ein Leerzeichen auftritt. Die Scanf-Funktion liest nur Guru99.

Um zu lesen, dass eine Zeichenfolge Leerzeichen enthรคlt, verwenden wir die Funktion gets(). Gets ignoriert die Leerzeichen. Es hรถrt auf

Lesen, wenn eine neue Zeile erreicht ist (die Eingabetaste wird gedrรผckt).

Beispielsweise:

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

Ausgang:

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

Eine weitere sicherere Alternative zu gets() ist die Funktion fgets(), die eine bestimmte Anzahl von Zeichen liest.
Beispielsweise:

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

Ausgang:

Enter your name plz: Carlos
My name is Carlos

Die fgets()-Argumente sind:

  • der Stringname,
  • die Anzahl der zu lesenden Zeichen,
  • stdin bedeutet, von der Standardeingabe, also der Tastatur, zu lesen.

C-String-Ausgabe: C-Programm zum Drucken eines Strings

Die Standardfunktion printf wird zum Drucken oder Anzeigen von Strings in C auf einem Ausgabegerรคt verwendet. Der verwendete Formatbezeichner ist %s

Beispiel

printf("%s", name);

Die String-Ausgabe erfolgt mit den Funktionen fputs() und printf().

fputs()-Funktion

Die fputs() benรถtigt den Namen des Strings und einen Zeiger auf die Stelle, an der Sie den Text anzeigen mรถchten. Wir verwenden stdout, was sich auf die Standardausgabe bezieht, um auf dem Bildschirm zu drucken.
Beispielsweise:

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

Ausgang:

Enter your town: New York
New York

setzt Funktion

Die Puts-Funktion wird verwendet, um eine Zeichenfolge in C auf einem Ausgabegerรคt zu drucken und den Cursor zurรผck an die erste Position zu bewegen. Eine Puts-Funktion kann folgendermaรŸen verwendet werden:

#include <stdio.h>
int main() {
char name[15];
gets(name);        //reads a string
puts(name);        //displays a string
return 0;}

Die Syntax dieser Funktion ist vergleichsweise einfacher als bei anderen Funktionen.

Die String-Bibliothek

Die Standardbibliothek โ€žCโ€œ bietet verschiedene Funktionen zum Bearbeiten der Zeichenfolgen innerhalb eines Programms. Diese Funktionen werden auch als String-Handler bezeichnet. Alle diese Handler sind im Inneren vorhanden Header-Datei.

Funktion Zweck
strlen () Diese Funktion wird zum Ermitteln der Lรคnge einer Zeichenfolge verwendet. Es gibt zurรผck, wie viele Zeichen in einer Zeichenfolge vorhanden sind, mit Ausnahme des NULL-Zeichens.
strcat(str1, str2) Diese Funktion wird verwendet, um zwei Strings zu einem einzigen String zu kombinieren. Es hรคngt str2 an das Ende von str1 an oder verkettet es und gibt einen Zeiger auf str1 zurรผck.
strcmp(str1, str2) Mit dieser Funktion werden zwei Strings miteinander verglichen. Es gibt 0 zurรผck, wenn str1 gleich str2 ist, kleiner als 0, wenn str1 < str2, und grรถรŸer als 0, wenn str1 > str2.

Betrachten wir das folgende Programm, das die Funktionen der String-Bibliothek demonstriert:

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

Ausgang:

Strings are not equal
Concatenated string:Hello World!
Length of first string:12
Length of second string:7
Copied string is:Hello World!

Weitere wichtige Bibliotheksfunktionen sind:

  • strncmp(str1, str2, n): Es gibt 0 zurรผck, wenn die ersten n Zeichen von str1 gleich den ersten n Zeichen von str2 sind, kleiner als 0, wenn str1 < str2, und grรถรŸer als 0, wenn str1 > str2.
  • strncpy(str1, str2, n) Diese Funktion wird verwendet, um einen String aus einem anderen String zu kopieren. Kopiert die ersten n Zeichen von str2 nach str1
  • strchr(str1, c): Gibt einen Zeiger auf das erste Vorkommen von char c in str1 zurรผck, oder NULL, wenn das Zeichen nicht gefunden wird.
  • strrchr(str1, c): Es durchsucht str1 in umgekehrter Reihenfolge und gibt einen Zeiger auf die Position von char c in str1 zurรผck, oder NULL, wenn das Zeichen nicht gefunden wird.
  • strstr(str1, str2): Gibt einen Zeiger auf das erste Vorkommen von str2 in str1 zurรผck, oder NULL, wenn str2 nicht gefunden wird.
  • strncat(str1, str2, n) Hรคngt (verkettet) die ersten n Zeichen von str2 an das Ende von str1 und gibt einen Zeiger auf str1 zurรผck.
  • strlwr(): um einen String in Kleinbuchstaben umzuwandeln
  • strupr(): um einen String in GroรŸbuchstaben umzuwandeln
  • strrev(): String umkehren

Konvertieren einer Zeichenfolge in eine Zahl

In der C-Programmierung kรถnnen wir eine Zeichenfolge aus numerischen Zeichen in einen numerischen Wert umwandeln, um Laufzeitfehler zu vermeiden. Die Bibliothek stdio.h enthรคlt die folgenden Funktionen zum Umwandeln einer Zeichenfolge in eine Zahl:

  • int atoi(str) Steht fรผr ASCII to Integer; es konvertiert str in den entsprechenden int-Wert. 0 wird zurรผckgegeben, wenn das erste Zeichen keine Zahl ist oder keine Zahlen gefunden werden.
  • double atof(str) Steht fรผr ASCII zu Float, es konvertiert str in den entsprechenden Double-Wert. 0.0 wird zurรผckgegeben, wenn das erste Zeichen keine Zahl ist oder keine Zahlen gefunden werden.
  • long int atol(str) Steht fรผr ASCII to long int, konvertiert str in den entsprechenden long int-Wert. 0 wird zurรผckgegeben, wenn das erste Zeichen keine Zahl ist oder keine Zahlen gefunden werden.

Das folgende Programm demonstriert die Funktion 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;}

Ausgang:

Enter a number: 221348
you enter 221348
  • Eine String-Pointer-Deklaration wie char *string = โ€žSpracheโ€œ ist eine Konstante und kann nicht geรคndert werden.

Zusammenfassung

  • Eine Zeichenfolge ist eine Folge von Zeichen, die in einem Zeichenarray gespeichert sind.
  • Eine Zeichenfolge ist ein in doppelte Anfรผhrungszeichen eingeschlossener Text.
  • Ein Zeichen wie โ€ždโ€œ ist keine Zeichenfolge und wird durch einfache Anfรผhrungszeichen gekennzeichnet.
  • โ€žCโ€œ bietet Standardbibliotheksfunktionen zum Bearbeiten von Zeichenfolgen in einem Programm. String-Manipulatoren werden in gespeichert Header-Datei.
  • Eine Zeichenfolge muss vor der Verwendung in einem Programm deklariert oder initialisiert werden.
  • Es gibt verschiedene Eingabe- und Ausgabezeichenfolgenfunktionen, von denen jede ihre eigenen Funktionen hat.
  • Vergessen Sie nicht, die String-Bibliothek einzuschlieรŸen, um mit ihren Funktionen arbeiten zu kรถnnen
  • Wir kรถnnen Zeichenfolgen รผber atoi(), atof() und atol() in Zahlen umwandeln, die fรผr Codierungs- und Decodierungsprozesse sehr nรผtzlich sind.
  • Wir kรถnnen verschiedene Strings manipulieren, indem wir in C ein Array von Strings definieren.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: