C-Standardbibliothek -<string.h>
Einführung
string .hDie Header-Datei definiert einen Variablentyp, ein Makro und verschiedene Funktionen zum Arbeiten mit Zeichenarrays.
<string.h>Ist eine Header-Datei in der C-Standardbibliothek, die eine Reihe von Funktionen für den Umgang mit Zeichenketten und Speicherblöcken bereitstellt. Diese Funktionen umfassen das Kopieren, Verketten, Vergleichen und Suchen von Zeichenketten sowie Speicheroperationen usw.
Bibliotheksvariablen
Nachfolgend ist der Variablentyp aufgeführt, der in der Header-Datei string.h definiert ist:
| Laufende Nummer | Variablen & Beschreibung |
|---|---|
| 1 | size_t Dies ist ein vorzeichenloser Ganzzahltyp, der das Ergebnis des Schlüsselwortssizeofist. |
Bibliotheksmakros
Nachfolgend sind die Makros aufgeführt, die in der Header-Datei string.h definiert sind:
| Laufende Nummer | Makros & Beschreibung |
|---|---|
| 1 | NULL Dieses Makro ist der Wert einer Nullzeigerkonstante. |
Bibliotheksfunktionen
Nachfolgend sind die Funktionen aufgeführt, die in der Header-Datei string.h definiert sind:
| Laufende Nummer | Funktionen & Beschreibung |
|---|---|
| 1 | void *memchr(const void *str, int c, size_t n) Im Parameterstrwird nach dem ersten Vorkommen des Zeichens c (ein vorzeichenloses Zeichen) in den ersten n Bytes der Zeichenkette, auf die gezeigt wird, gesucht. |
| 2 | int memcmp(const void *str1, const void *str2, size_t n) enthaltenstr1undstr2Vergleicht die ersten n Bytes. |
| 3 | void *memcpy(void *dest, const void *src, size_t n) Kopiert n Zeichen von src nachdest。 |
| 4 | void *memmove(void *dest, const void *src, size_t n) eine andere, die verwendet wird, um vonsrcn Zeichen nachdestder Funktion zu kopieren. |
| 5 | void *memset(void *str, int c, size_t n) Kopiert den angegebenen Wert c in die ersten n Bytes des Speicherbereichs, auf den str zeigt. |
| 6 | char *strcat(char *dest, const char *src) enthältsrcHängt die Zeichenkette, auf diedestzeigt, an das Ende der Zeichenkette an, auf die gezeigt wird. |
| 7 | char *strncat(char *dest, const char *src, size_t n) holdsrcHängt die Zeichenkette, auf die vondestgezeigt wird, an das Ende der Zeichenkette an, auf die sie zeigt, bis zu einer Länge von n Zeichen. |
| 8 | char *strchr(const char *str, int c) Im Parameterstrsucht nach dem ersten Vorkommen des Zeichens c (einem vorzeichenlosen Zeichen) in der Zeichenkette, auf die gezeigt wird. |
| 9 | int strcmp(const char *str1, const char *str2) Haltenstr1Die Zeichenkette, auf die gezeigt wird vonstr2Vergleicht mit der Zeichenkette, auf die gezeigt wird von |
| 10 | int strncmp(const char *str1, const char *str2, size_t n) haltenstr1undstr2zum Vergleich, wobei höchstens die ersten n Bytes verglichen werden. |
| 11 | int strcoll(const char *str1, const char *str2) sowohlstr1als auchstr2vergleicht, und das Ergebnis hängt von der LC_COLLATE-Locale-Einstellung ab. |
| 12 | char *strcpy(char *dest, const char *src) haltesrcdie Zeichenkette, auf die gezeigt wird, wird nachdest kopiert。 |
| 13 | char *strncpy(char *dest, const char *src, size_t n) holdsrcdie Zeichenkette, auf die gezeigt wird, wird nachdestkopiert, wobei höchstens n Zeichen kopiert werden. |
| 14 | size_t strcspn(const char *str1, const char *str2) Zählt, wie viele aufeinanderfolgende Zeichen am Anfang der Zeichenkette str1 keines der Zeichen in der Zeichenkette str2 enthalten. |
| 15 | char *strerror(int errnum) Durchsucht das interne Array nach der Fehlernummer errnum und gibt einen Zeiger auf die Fehlermeldungszeichenkette zurück. |
| 16 | size_t strlen(const char *str) Berechnet die Länge der Zeichenkette str bis zum abschließenden Nullzeichen, dieses jedoch nicht eingeschlossen. |
| 17 | char *strpbrk(const char *str1, const char *str2) Durchsucht die Zeichenkettestr1nach der ersten Übereinstimmung in der Zeichenkettestr2mit einem Zeichen aus den Zeichen, ohne das abschließende Nullzeichen. Das heißt, sie untersucht die Zeichen in der Zeichenkette str1 nacheinander; wenn ein geprüftes Zeichen auch in der Zeichenkette str2 gefunden wird, hält sie an und gibt die Position dieses Zeichens zurück. |
| 18 | char *strrchr(const char *str, int c) Im Parameterstrsucht sie nach dem letzten Vorkommen des Zeichens c (einem unsigned char) in der Zeichenkette, auf die gezeigt wird. |
| 19 | size_t strspn(const char *str1, const char *str2) Suchzeichenfolgestr1Das erste Zeichen in ... das nicht in der Zeichenfolge enthalten iststr2Der Index des Zeichens, das in |
| 20 | char *strstr(const char *haystack, const char *needle) In der ZeichenfolgehaystackFindet das erste Vorkommen der Zeichenfolgeneedle(ohne das Null-Abschlusszeichen). |
| 21 | char *strtok(char *str, const char *delim) Zerlegt die Zeichenfolgestrin eine Menge von Zeichenfolgen,delimals Trennzeichen. |
| 22 | size_t strxfrm(char *dest, const char *src, size_t n) Konvertiert die Zeichenfolge gemäß der LC_COLLATE-Kategorie des aktuellen Locales des Programms.srcdie vorderennZeichen und platziert sie in die Zeichenfolgedesthinein. |
Beispiel
Das Folgende verwendet<string.h>Beispiele für einige Funktionen in
Zeichenfolgen kopieren:
Beispiel
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[50];
strcpy(dest, src);
printf("Kopierte Zeichenfolge: %s\n", dest);
return 0;
}
Zeichenfolgen verketten:
Beispiel
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[] = ", World!";
strcat(str1, str2);
printf("Verkettete Zeichenkette: %s\n", str1);
return 0;
}
Zeichenketten vergleichen:
Beispiel
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
if (result == 0) {
printf("Zeichenketten sind gleich\n");
} else {
printf("Zeichenketten sind nicht gleich\n");
}
return 0;
}
Findet das erste Vorkommen eines Zeichens in einer Zeichenkette:
Beispiel
#include <string.h>
int main() {
char str[] = "Hello, World!";
char *ptr = strchr(str, 'o');
if (ptr != NULL) {
printf("Erstes Vorkommen von 'o' gefunden an Position: %ld\n", ptr - str);
} else {
printf("Zeichen nicht gefunden\n");
}
return 0;
}
Kopieren von Speicherblöcken:
Beispiel
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[50];
memcpy(dest, src, strlen(src) + 1);
printf("Kopierter Speicher: %s\n", dest);
return 0;
}
Hinweise
- Stellen Sie bei der Verwendung von String-Funktionen sicher, dass der Zielpuffer genügend Speicherplatz für das Ergebnis bietet, um einen Pufferüberlauf zu vermeiden.
strncpyundstrncatEs kann die maximale Anzahl der zu kopierenden oder zu verkettenden Zeichen angegeben werden, was hilft, einen Pufferüberlauf zu verhindern.strtokDie Funktion ist nicht threadsicher, da sie intern statische Variablen verwendet, um den Kontext zu speichern. Wenn sie in einer Multithread-Umgebung verwendet wird, müssen Sie verwendenstrtok_rFunktion.- Nutzung
memcpyWenn ... sich die Quell- und Zielspeicherbereiche nicht überschneiden sollten. Wenn eine Überschneidung auftreten kann, sollten Sie verwendenmemmove。
Durch das Verstehen und Verwenden<string.h>Die bereitgestellten Funktionen ermöglichen bequeme String- und Speicheroperationen und damit effizientere und zuverlässigere C-Programme.