Zeichenfolgen in C: Deklarieren von Variablen, Initialisieren, Drucken, Beispiel

Inhaltsverzeichnis:

Anonim

Was ist String in C?

Ein String in C ist nichts anderes als eine Sammlung von Zeichen in einer linearen Reihenfolge. 'C' behandelt eine Zeichenfolge immer mit einzelnen Daten, obwohl sie Leerzeichen enthält. Ein einzelnes Zeichen wird mithilfe einer Darstellung in einfachen Anführungszeichen definiert. Eine Zeichenfolge wird durch doppelte Anführungszeichen dargestellt.

Example, "Welcome to the world of programming!"

'C' bietet die Standardbibliothek , die viele Funktionen enthält, mit denen komplizierte Operationen an Strings in C einfach ausgeführt werden können.

In diesem Tutorial lernen Sie:

  • Deklarieren und Initialisieren eines Strings in C.
  • String-Eingabe: Lesen Sie einen String
  • String-Ausgabe: Drucken / Anzeigen eines Strings
    • fputs () Funktion
    • setzt Funktion
  • Die String-Bibliothek
  • Konvertieren eines Strings in eine Zahl

Deklarieren und Initialisieren eines Strings in C.

AC String ist ein einfaches Array mit char als Datentyp. Die Sprache 'C' unterstützt Zeichenfolgen nicht direkt als Datentyp. 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 hiermit berechnet wird, wie viele Zeichen in der String-Variablen in C gespeichert werden sollen. Einige gültige Beispiele für die String-Deklaration sind:

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

Das obige Beispiel stellt Zeichenfolgenvariablen mit einer Arraygröße von 15 dar. Dies bedeutet, dass das angegebene C-Zeichenfolgenarray höchstens 15 Zeichen enthalten kann. Die Indizierung des Arrays beginnt bei 0, daher werden Zeichen von einer Position von 0 bis 14 gespeichert. Der C-Compiler fügt dem erstellten Zeichenarray automatisch ein NULL-Zeichen '\ 0' hinzu.

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

Mit 'C' können wir auch eine Zeichenfolgenvariable initialisieren, 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.

String-Eingabe: Lesen Sie einen String

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

Wenn wir scanf () zum Lesen verwenden, verwenden wir den Formatbezeichner "% s", ohne das "&" zu verwenden, um auf die Variablenadresse zuzugreifen, da ein Arrayname als Zeiger fungiert. Zum Beispiel:

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

Ausgabe:

Enter your first name and age:John_Smith 48

Das Problem mit der Funktion scanf besteht darin, dass niemals ganze Zeichenfolgen in C gelesen werden. Der Lesevorgang wird angehalten, sobald Leerzeichen, Formularvorschub, vertikale Registerkarte, Zeilenumbruch oder Wagenrücklauf auftreten. Angenommen, wir geben Eingaben als "Guru99-Tutorials" ein, dann liest die scanf-Funktion niemals eine ganze Zeichenfolge, da zwischen den beiden Namen ein Leerzeichen steht. Die scanf-Funktion liest nur Guru99.

Um zu lesen, dass ein String Leerzeichen enthält, verwenden wir die Funktion gets (). Gets ignoriert die Leerzeichen. Es hört auf zu lesen, wenn eine neue Zeile erreicht ist (die Eingabetaste wird gedrückt). Zum Beispiel:

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

Ausgabe:

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

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

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

Ausgabe:

Enter your name plz: CarlosMy name is Carlos

Die Argumente für fgets () sind:

  • der Stringname,
  • die Anzahl der zu lesenden Zeichen,
  • stdin bedeutet, von der Standardeingabe zu lesen, bei der es sich um die Tastatur handelt.

String-Ausgabe: Drucken / Anzeigen 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

Das fputs () benötigt den Namen der Zeichenfolge und einen Zeiger auf die Stelle, an der Sie den Text anzeigen möchten. Wir verwenden stdout, das sich auf die Standardausgabe bezieht, um auf dem Bildschirm zu drucken. Zum Beispiel:

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

Ausgabe:

Enter your town: New YorkNew 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 int main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}

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

Die String-Bibliothek

Die Standard-C-Bibliothek bietet verschiedene Funktionen zum Bearbeiten der Zeichenfolgen innerhalb eines Programms. Diese Funktionen werden auch als String-Handler bezeichnet. Alle diese Handler sind in der Header-Datei vorhanden.

Funktion Zweck
strlen () Diese Funktion wird zum Ermitteln der Länge einer Zeichenfolge verwendet. Es wird zurückgegeben, wie viele Zeichen in einer Zeichenfolge mit Ausnahme des NULL-Zeichens vorhanden sind.
strcat (str1, str2) Diese Funktion wird verwendet, um zwei Zeichenfolgen zu einer einzigen Zeichenfolge 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) Diese Funktion wird verwendet, um zwei Zeichenfolgen miteinander zu vergleichen. Es gibt 0 zurück, wenn str1 gleich str2 ist, kleiner als 0, wenn str1 str2.

Betrachten wir das folgende Programm, das die Funktionen der Zeichenfolgenbibliothek demonstriert:

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

Ausgabe:

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

Weitere wichtige Bibliotheksfunktionen sind:

  • strncmp (str1, str2, n): Es wird 0 zurückgegeben, wenn die ersten n Zeichen von str1 gleich den ersten n Zeichen von str2 sind, kleiner als 0, wenn str1 str2.
  • strncpy (str1, str2, n) Mit dieser Funktion wird eine Zeichenfolge aus einer anderen Zeichenfolge kopiert. Kopiert die ersten n Zeichen von str2 nach str1
  • strchr (str1, c): Gibt einen Zeiger auf das erste Vorkommen von char c in str1 oder NULL zurück, wenn das Zeichen nicht gefunden wurde.
  • strrchr (str1, c): Es sucht str1 in umgekehrter Reihenfolge und gibt einen Zeiger auf die Position von char c in str1 oder NULL zurück, wenn das Zeichen nicht gefunden wird.
  • strstr (str1, str2): Gibt einen Zeiger auf das erste Auftreten von str2 in str1 oder NULL zurück, wenn str2 nicht gefunden wird.
  • strncat (str1, str2, n) Hängt die ersten n Zeichen von str2 an das Ende von str1 an (verkettet sie) und gibt einen Zeiger auf str1 zurück.
  • strlwr (): Konvertiert einen String in Kleinbuchstaben
  • strupr (): Konvertiert einen String in Großbuchstaben
  • strrev (): um den String umzukehren

Konvertieren eines Strings in eine Zahl

In der C-Programmierung können wir eine Zeichenfolge aus numerischen Zeichen in einen numerischen Wert konvertieren, um einen Laufzeitfehler zu vermeiden. Die Bibliothek stdio.h enthält die folgenden Funktionen zum Konvertieren einer Zeichenfolge in eine Zahl:

  • int atoi (str) Steht für ASCII to integer; es konvertiert str in den äquivalenten 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, um zu schweben, und konvertiert str in den entsprechenden doppelten 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 zu long int. Konvertiert str in den entsprechenden Wert für lange Ganzzahlen. 0 wird zurückgegeben, wenn das erste Zeichen keine Zahl ist oder keine Zahlen gefunden werden.

Das folgende Programm demonstriert die Funktion atoi ():

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

Ausgabe:

Enter a number: 221348you enter 221348
  • Eine Zeichenfolgenzeigerdeklaration wie char * string = "language" 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 Text in doppelten Anführungszeichen.
  • Ein Zeichen wie 'd' ist keine Zeichenfolge und wird durch einfache Anführungszeichen angezeigt.
  • 'C' bietet Standardbibliotheksfunktionen zum Bearbeiten von Zeichenfolgen in einem Programm. String-Manipulatoren werden in der Header-Datei gespeichert.
  • Eine Zeichenfolge muss vor der Verwendung in einem Programm deklariert oder initialisiert werden.
  • Es gibt verschiedene Eingabe- und Ausgabezeichenfolgenfunktionen, von denen jede ihre Funktionen hat.
  • Vergessen Sie nicht, die Zeichenfolgenbibliothek einzuschließen, um mit ihren Funktionen arbeiten zu können
  • Wir können Zeichenfolgen durch atoi (), atof () und atol () in Zahlen konvertieren, die für Codierungs- und Decodierungsprozesse sehr nützlich sind.
  • Wir können verschiedene Zeichenfolgen bearbeiten, indem wir ein Array von Zeichenfolgen in C definieren.