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