.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 1990, 1991 The Regents of the University of California. .\" All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Chris Torek and the American National Standards Committee X3, .\" on Information Processing Systems. .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\" @(#)scanf.3 6.14 (Berkeley) 1/8/93 .\" .\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu .\" modified to resemble the GNU libio setup used in the Linux libc .\" used in versions 4.x (x>4) and 5 Helmut.Geyer@iwr.uni-heidelberg.de .\" Modified, aeb, 970121 .\" 2005-07-14, mtk, added description of %n$ form; various text .\" incorporated from the GNU C library documentation ((C) The .\" Free Software Foundation); other parts substantially rewritten. .\" .\" 2008-06-23, mtk .\" Add ERRORS section. .\" Document the 'a' and 'm' modifiers for dynamic string allocation. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sscanf 3 "17. November 2024" "Linux man\-pages 6.12" .SH BEZEICHNUNG sscanf, vsscanf \- Formatumwandlungen von Eingabezeichenketten .SH BIBLIOTHEK Standard\-C\-Bibliothek (\fIlibc\fP,\ \fI\-lc\fP) .SH ÜBERSICHT .nf \fB#include \fP .P \fBint sscanf(const char *restrict \fP\fIzeichenkette\fP\fB,\fP \fB const char *restrict \fP\fIformat\fP\fB, …);\fP .P \fB#include \fP .P \fBint vsscanf(const char *restrict \fP\fIzeichenkette\fP\fB,\fP \fB const char *restrict \fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP .fi .P .RS -4 Mit Glibc erforderliche Feature\-Test\-Makros (siehe \fBfeature_test_macros\fP(7)): .RE .P \fBvsscanf\fP(): .nf _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L .fi .SH BESCHREIBUNG Die Funktionenfamilie \fBsscanf\fP() untersucht formatierte Eingabe entsprechend \fIformat\fP, wie es im Folgenden beschrieben wird. Dieses Format darf \fIUmwandlungsspezifikationen\fP enthalten; die Ergebnisse solcher Umwandlungen, falls vorhanden, werden an den Stellen gespeichert, auf die die \fIZeiger\fP\-Argumente verweisen, die sich an \fIformat\fP halten. Jedes \fIZeiger\fP\-Argument muss einen geeigneten Typ für den Rückgabewert der zugehörigen Umwandlungsspezifikation haben. .P Falls die Anzahl der Umwandlungsspezifikationen in \fIformat\fP die Anzahl der \fIZeiger\fP\-Argumente übersteigt, sind die Ergebnisse undefiniert. Falls die Anzahl der \fIZeiger\fP\-Argumente die Anzahl der Umwandlungsspezifikationen übersteigt, werden die überzähligen \fIZeiger\fP\-Argumente ausgewertet, aber ansonsten ignoriert. .P \fBsscanf\fP() Diese Funktionen lesen ihre Eingabe aus der Zeichenkette, auf die \fIzeichenkette\fP zeigt. .P Die Funktion \fBvsscanf\fP() verhält sich analog zu \fBvsprintf\fP(3). .P Die Zeichenkette \fIformat\fP besteht aus einer Abfolge von \fIRichtlinien\fP, die beschreiben, wie die Abfolge der Eingabezeichen verarbeitet wird. Wenn das Verarbeiten einer Richtlinie fehlschlägt, werden keine weiteren Eingaben gelesen und \fBsscanf\fP() kehrt zurück. Ein »Fehlschlagen« kann Folgendes sein: \fIinput failure\fP bedeutet, dass Eingabezeichen nicht verfügbar sind. \fImatching failure\fP heißt, dass die Eingabe ungeeignet war (siehe unten). .P Eine Richtlinie kann Folgendes sein: .TP \[bu] eine Abfolge von Leerräumen (Leerzeichen, Tabulator, Zeilenvorschub, etc.; siehe \fBisspace\fP(3)). Diese Richtlinie passt auf jede Menge von Leerräumen, einschließlich keinem, in der Eingabe. .TP \[bu] ein normales Zeichen (d.h. ein anderes, als ein Leerraum oder »%«). Dieses Zeichen muss exakt mit dem nächsten Zeichen der Eingabe übereinstimmen. .TP \[bu] eine Umwandlungsspezifikation, die mit dem Zeichen »%« (Prozent) beginnt. Eine Abfolge von Zeichen wird gemäß dieser Spezifikation umgewandelt und das Ergebnis wird in das zugehörige \fIZeiger\fP\-Argument platziert. Falls das nächste Element nicht der Umwandlungsspezifikation entspricht, schlägt die Umwandlung fehl \[em] dies ist ein \fImatching failure\fP. .P Jede \fIUmwandlungsspezifikation\fP in \fIformat\fP fängt entweder mit dem Zeichen »%« an oder der Zeichensequenz »\fB%\fP\fIn\fP\fB$\fP« (siehe unten für die Unterscheidung) gefolgt von: .TP \[bu] einem optionalen »*«\-Zeichen zur Unterdrückung der Zuweisung: \fBsscanf\fP() liest die Eingabe gemäß der Umwandlungsspezifikation, verwirft aber die Eingabe. Es wird kein zugehöriges \fIZeiger\fP\-Argument benötigt und diese Spezifikation ist nicht in der Anzahl der erfolgreichen Zuweisungen enthalten, die von \fBsscanf\fP() zurückgegeben werden. .TP \[bu] einem optionalen englischen Anführungszeichen (\[aq]) für dezimale Umwandlungen. Dies gibt an, dass die Eingabezahl einen Tausendertrenner wie in der Kategorie \fBLC_NUMERIC\fP der aktuellen Locale definiert enthalten kann (siehe setlocale(3)). Das Maskierungszeichen kann dem »*«\-Zuweisungsunterdrückungszeichen folgen oder ihm vorangehen. .TP \[bu] einem optionalen »m«\-Zeichen. Dies wird mit Zeichenkettenumwandlungen benutzt (%s, %c, %[) und entlastet den Aufrufenden von der Notwendigkeit, einen zugehörigen Puffer zu reservieren, der die Eingabe erhält: Stattdessen reserviert \fBsscanf()\fP einen Puffer von ausreichender Größe und weist die Adresse dieses Puffers dem zugehörigen \fIZeiger\fP\-Argument zu, das ein Zeiger auf eine \fIchar\ *\fP\-Variable sein sollte. (Diese Variable muss nicht vor dem Aufruf initialisiert werden.) Der Aufrufende sollte diesen Puffer danach mit \fBfree\fP(3) freigeben, wenn er nicht länger benötigt wird. .TP \[bu] einer optionalen dezimalen Ganzzahl, die die \fImaximale Feldbreite\fP angibt. Das Lesen von Zeichen stoppt entweder wenn dieses Maximum erreicht wurde oder wenn ein unpassendes Zeichen gefunden wurde, je nachdem, was eher auftrat. Die meisten Umwandlungen verwerfen Leerräume am Anfang (die Ausnahmen sind nachfolgend vermerkt). Diese verworfenen Zeichen werden nicht bei der Berechnung der maximalen Feldbreite mitgezählt. Eingabeumwandlung von Zeichenketten speichert ein abschließendes Nullbyte (»\[rs]0«), um das Ende der Eingabe zu kennzeichnen; die maximale Feldbreite enthält dieses Endezeichen nicht. .TP \[bu] Ein optionales \fITypveränderungszeichen\fP. Beispielsweise wird der Typveränderer \fBl\fP mit Ganzzahlumwandlungen wie \fB%d\fP verwandt, um festzulegen, dass sich das entsprechende \fIZeiger\fP\-Argument auf ein \fIlong\fP anstelle eines Zeigers auf ein \fIint\fP bezieht. .TP \[bu] Ein \fIUmwandlungskennzeichner\fP, der die Art der durchzuführende Eingabeumwandlung festlegt. .P Die Umwandlungskennzeichner in \fIformat\fP gibt es in zwei Formen, entweder mit »%« oder mit »\fB%\fP\fIn\fP\fB$\fP« am Anfang. Die zwei Formen sollten in der gleichen \fIformat\fP\-Zeichenkette nicht gemischt werden, außer dass eine Zeichenkette, die »\fB%\fP\fIn\fP\fB$\fP«\-Angaben enthält \fB%%\fP und \fB%*\fP enthalten kann. Falls \fIformat\fP »%«\-Angaben enthält, dann entsprechen sie in der Reihenfolge nachfolgenden \fIZeiger\fP\-Argumenten. In der Form »\fB%\fP\fIn\fP\fB$\fP« (die in POSIX.1\-2001, aber nicht in C99 festgelegt ist) ist \fIn\fP eine dezimale Ganzzahl, die festlegt, dass umgewandelte Eingabe an dem Ort abgelegt werden soll, auf den sich das \fIn\fP\-1 \fIZeiger\fP\-Argument bezieht, das \fIformat\fP folgt. .SS Umwandlungen Die folgenden \fITypveränderungszeichen\fP können in einer Umwandlungsfestlegung auftauchen: .TP \fBh\fP Zeigt an, dass die Umwandlung eine aus \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBn\fP sein wird und dass der nächste Zeiger ein Zeiger auf \fIshort\fP oder \fIunsigned short\fP (anstelle von \fIint\fP) ist. .TP \fBhh\fP Wie bei \fBh\fP, aber der nächste Zeiger ist ein Zeiger auf \fIsigned char\fP oder \fIunsigned char\fP. .TP \fBj\fP Wie bei \fBh\fP, aber der nächste Zeiger ist ein Zeiger auf \fIintmax_t\fP oder \fIuintmax_t\fP. Dieser Veränderer wurde in C99 eingeführt. .TP \fBl\fP .\" This use of l was introduced in Amendment 1 to ISO C90. Zeigt an, dass die Umwandlung eine aus \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBn\fP sein wird und dass der nächste Zeiger ein Zeiger auf \fIlong\fP oder \fIunsigned long\fP (anstelle von \fIint\fP) ist oder dass die Umwandlung eine aus \fBe\fP, \fBf\fP, \fBg\fP sein wird und dass der nächste Zeiger ein Zeiger auf \fIdouble\fP (anstelle von \fIfloat\fP) ist. Falls zusammen mit \fB%c\fP oder \fB%s\fP verwandt, wird der entsprechende Parameter als Zeiger auf ein weites Zeichen bzw. eine Zeichenkette weiter Zeichen betrachtet. .TP \fBll\fP (ell\-ell) Zeigt an, dass die Umwandlung eine aus \fBb\fP, \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBn\fP sein wird und dass der nächste Zeiger ein Zeiger auf \fIlong long\fP oder \fIunsigned long long\fP (anstelle von \fIint\fP) sein wird. .TP \fBL\fP .\" MTK, Jul 05: The following is no longer true for modern .\" ANSI C (i.e., C99): .\" (Note that long long is not an .\" ANSI C .\" type. Any program using this will not be portable to all .\" architectures). Zeigt an, dass die Umwandlung eine aus \fBe\fP, \fBf\fP, or \fBg\fP sein wird und dass der nächste Zeiger ein Zeiger auf \fIlong double\fP sein wird oder (als GNU\-Erweiterung) die Umwandlung eine aus \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP und dass der nächste Zeiger ein Zeiger auf \fIlong long\fP sein wird. .TP \fBq\fP äquivalent zu \fBL\fP. Dieser Kennzeichner existiert in ANSI C nicht. .TP \fBt\fP Wie bei \fBh\fP, aber der nächste Zeiger ist ein Zeiger auf \fIptrdiff_t\fP. Dieser Veränderer wurde in C99 eingeführt. .TP \fBz\fP Wie bei \fBh\fP, aber der nächste Zeiger ist ein Zeiger auf \fIsize_t\fP. Dieser Veränderer wurde in C99 eingeführt. .P Die folgenden \fIUmwandlungskennzeichner\fP sind verfügbar: .TP \fB%\fP Passt auf ein wörtliches »%«. Das heißt, \fB%\&%\fP in der Formatzeichenkette passt auf ein einzelnes Eingabezeichen »%«. Es erfolgt keine Umwandlung (aber anfängliche Leerraumzeichen werden verworfen) und keine Zuweisung. .TP \fBd\fP .\" .TP .\" .B D .\" Equivalent to .\" .IR ld ; .\" this exists only for backward compatibility. .\" (Note: thus only in libc4 .\" In libc5 and glibc the .\" .B %D .\" is silently ignored, causing old programs to fail mysteriously.) Passt auf eine optional vorzeichenbehaftete Ganzzahl; der nächste Zeiger muss ein Zeiger auf \fIint\fP sein. .TP \fBi\fP Passt auf eine optional vorzeichenbehaftete Ganzzahl; der nächste Zeiger muss ein Zeiger auf \fIint\fP sein. Die Ganzzahl wird zur Basis 16 gelesen, falls sie mit \fI0x\fP oder \fI0X\fP anfängt; zur Basis 8, falls sie mit \fI0\fP beginnt und ansonsten zur Basis 10. Es werden nur Zeichen verwandt, die der Basis entsprechen. .TP \fBo\fP Passt auf eine vorzeichenlose oktale Ganzzahl; der nächste Zeiger muss ein Zeiger auf \fIunsigned int\fP sein. .TP \fBu\fP Passt auf eine vorzeichenlose dezimale Ganzzahl; der nächste Zeiger muss ein Zeiger auf \fIunsigned int\fP sein. .TP \fBx\fP Passt auf eine vorzeichenlose hexadezimale Ganzzahl (die optional mit einem Präfix \fI0x\fP oder \fI0X\fP beginnt, der verworfen wird); der nächste Zeiger muss ein Zeiger auf \fIunsigned int\fP sein. .TP \fBX\fP Äquivalent zu \fBx\fP. .TP \fBf\fP Passt auf eine optional vorzeichenbehaftete Fließkommazahl; der nächste Zeiger muss ein Zeiger auf \fIfloat\fP sein. .TP \fBe\fP Äquivalent zu \fBf\fP. .TP \fBg\fP Äquivalent zu \fBf\fP. .TP \fBE\fP Äquivalent zu \fBf\fP. .TP \fBa\fP (C99) Äquivalent zu \fBf\fP. .TP \fBs\fP Passt auf eine Sequenz von nicht\-Leerraum\-Zeichen; der nächste Zeiger muss ein Zeiger auf ein anfängliches Element eines Zeichenfeldes sein, das lang genug ist, um die Eingabesequenz und das abschließende Nullbyte (»\[rs]0«), das automatisch hinzugefügt wird, aufzunehmen. Die Eingabezeichenkette stoppt beim Leerraum oder bei der maximalen Feldbreite, je nachdem, was zuerst erreicht wird. .TP \fBc\fP Passt auf eine Sequenz von Zeichen, deren Länge durch die \fImaximale Feldbreite\fP (standardmäßig 1) festgelegt ist; der nächste Zeiger muss ein Zeiger auf ein \fIchar\fP sein und es muss genug Platz für alle Zeichen sein (es wird kein abschließendes Nullbyte hinzugefügt). Das gewöhnliche Überspringen anfänglichen Leerraums wird unterdrückt. Um zuerst Leerraum zu überspringen, verwenden Sie ein explizites Leerzeichen in dem Format. .TP \fB\&[\fP Passt auf eine nicht leere Zeichensequenz aus der angegebenen Menge von akzeptierten Zeichen; der nächste Zeiger muss ein Zeiger auf ein \fIchar\fP sein und es muss genug Platz für alle Zeichen in der Zeichenkette sowie des abschließende Nullbytes sein. Das gewöhnliche Überspringen anfänglichen Leerraums wird unterdrückt. Die Zeichenkette muss aus Zeichen in (oder nicht in) der bestimmten Menge sein; die Menge wird durch die Zeichen zwischen der öffnenden eckigen Klammer \fB[\fP und der schließenden eckigen Klammer \fB]\fP definiert. Die Menge schließt diese Zeichen \fIaus\fP, falls das erste Zeichen nach der öffnenden eckigen Klammer ein Zirkumflex (\fB\[ha]\fP) ist. Um eine schließende Klammer in die Menge aufzunehmen, verwenden Sie es als erstes Zeichen nach der öffnenden eckigen Klammer oder dem Zirkumflex, an jeder anderen Position wird sie die Menge schließen. Der Gedankenstrich \fB\-\fP ist auch besonders; wird er zwischen zwei andere Zeichen gestellt, fügt er alle dazwischen liegenden Zeichen zu der Menge hinzu. Um einen Gedankenstrich in die Menge aufzunehmen, stellen Sie ihn als letztes Zeichen vor die finale schließende eckige Klammer. Beispielsweise bedeutet \fB[\[ha]]0\-9\-]\fP die Menge »alles außer die schließende eckige Klammer, Null bis Neun und Gedankenstrich«. Die Zeichenkette endet mit dem Auftauchen eines Zeichens, das nicht in der Menge ist, oder (falls ein Zirkumflex verwandt wird) das in der Menge liegt oder wenn die Feldlänge erreicht wird. .TP \fBp\fP Passt auf einen Zeigerwert (wie von \fB%p\fP in \fBprintf\fP(3) ausgegeben); der nächste Zeiger muss ein Zeiger auf ein \fIvoid\fP sein. .TP \fBn\fP Es wird nichts erwartet, stattdessen wird die Anzahl der bisher aus der Eingabe verbrauchten Zeichen durch den nächsten Zeiger gespeichert, der ein Zeiger auf \fIint\fP oder eine Variante sein muss, deren Größe auf den (optionalen) ganzzahligen Längenveränderer passt. Dies ist \fIkeine\fP Umwandlung und vergrößert \fInicht\fP die durch die Funktion zurückgelieferte Anzahl. Diese Zuweisung kann mit dem Zuweisungs\-Unterdrückungszeichen \fB*\fP unterdrückt werden, aber die Auswirkung auf den Rückgabewert ist nicht definiert. Daher sollten \fB%*n\fP\-Umwandlungen nicht verwandt werden. .SH RÜCKGABEWERT Bei Erfolg geben diese Funktionen die Anzahl der Eingabeelemente zurück, die erfolgreich übereinstimmten und zugewiesen wurden. Dies können weniger sein, als bereitgestellt wurden oder null, wenn ein »matching failure« auftrat. .P Der Wert \fBEOF\fP wird zurückgeliefert, falls das Eingabeende erreicht wird, bevor entweder die erste erfolgreiche Umwandlung erfolgte oder ein »matching failure« auftrat. .SH FEHLER .TP \fBEILSEQ\fP Eingabe\-Byteabfolge bildet kein gültiges Zeichen. .TP \fBEINVAL\fP Nicht genug Argumente oder \fIformat\fP ist NULL. .TP \fBENOMEM\fP Speicher aufgebraucht. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lbx lb lb l l l. Schnittstelle Attribut Wert T{ .na .nh \fBsscanf\fP(), \fBvsscanf\fP() T} Multithread\-Fähigkeit MT\-Sicher locale .TE .SH STANDARDS C11, POSIX.1\-2008. .SH GESCHICHTE C89, POSIX.1\-2001. .P Der Umwandlungskennzeichner \fBq\fP ist die 4.4BSD\-Notation für \fIlong long\fP, während \fBll\fP oder die Verwendung von \fBL\fP in Ganzzahlumwandlungen die GNU\-Notation ist. .P Die Linux\-Version dieser Funktionen basiert auf der Bibliothek \fIGNU\fP \fIlibio\fP. Schauen Sie in die \fBinfo\fP(1)\-Dokumentation von \fIGNU\fP \fIlibc (glibc\-1.08)\fP für eine prägnantere Beschreibung. .SH ANMERKUNGEN .SS "Der »a«\-Zuweisung\-Reservierungs\-Veränderer" Ursprünglich unterstützte die GNU\-C\-Bibliothek dynamische Reservierungen für Zeichenketteneingaben (als nicht standardisierte Erweiterung) mittels des Zeichens \fBa\fP. (Diese Funktionalität ist seit mindestens Glibc 2.0 vorhanden). Daher könnte nachfolgendes geschrieben werden, damit \fBsscanf\fP() einen Puffer für eine Zeichenkette reserviert, wobei ein Zeiger auf diesen Puffer in \fI*buf\fP zurückgeliefert wird: .P .in +4n .EX char *buf; sscanf(str, "%as", &buf); .EE .in .P Die Verwendung des Buchstabens \fBa\fP für diesen Zweck war problematisch, da \fBa\fP durch die ISO\-C\-Norm auch als Synonym für \fBf\fP (Fließkommazahleneingabe) definiert ist. POSIX.1\-2008 spezifiziert stattdessen den Modifikator \fBm\fP für die Zuweisungsreservierung (wie in obiger BESCHREIBUNG dokumentiert). .P Beachten Sie, dass der Modifikator \fBa\fP nicht verfügbar ist, falls das Programm mit \fIgcc\ \-std=c99\fP oder \fIgcc\ \-D_ISOC99_SOURCE\fP kompiliert wurde (außer es wurde auch \fB_GNU_SOURCE\fP angegeben). In diesem Fall wird \fBa\fP als Kennzeichner für Fließkommazahlen interpretiert (siehe oben). .P Die Unterstützung für den Kennzeichner \fBm\fP wurde in Glibc 2.7 hinzugefügt und neue Programme sollten diesen Modifikator anstelle von \fBa\fP verwenden. .P Neben der Standardisierung durch POSIX hat der Modifikator \fBm\fP die folgenden zusätzlichen Vorteile gegenüber der Verwendung von \fBa\fP: .IP \[bu] 3 Er kann auch in Umwandlungskennzeichnern \fB%c\fP verwandt werden (z.B. \fB%3mc\fP). .IP \[bu] Er vermeidet Mehrdeutigkeiten in Hinblick auf den Fließommazahlen\-Umwandlungskennzeichner \fB%a\fP (und ist nicht von \fIgcc\ \-std=c99\fP usw. betroffen). .SH FEHLER .SS "Numerische Umwandlungskennzeichner" Die Verwendung von numerischen Umwandlungskennzeichnern erzeugt nicht definiertes Verhalten für ungültige Eingabe. Siehe .UR https://port70.net/\:%7Ensz/\:c/\:c11/\:n1570.html\:#7.21.6.2p10 C11 7.21.6.2/10 .UE . Dies ist ein Fehler in der ISO\-C\-Norm und keine immanente Eigenschaft mit dem API. Allerdings sind aktuelle Implementierungen nicht vor dem Fehler gefeit, daher wird deren Verwendung nicht empfohlen. Stattdessen sollten Programme Funktionen wie \fBstrtol\fP(3) verwenden, um numerische Eingabe auszuwerten. Alternativ entschärfen Sie dies durch Angabe einer maximalen Feldbreite. .SS "Nicht standardisierte Modifikatoren" Diese Funktionen sind vollständig C99\-konform, bieten aber die zusätzlichen Modifikatoren \fBq\fP und \fBa\fP sowie zusätzliches Verhalten der Modifikatoren \fBL\fP und \fBll\fP an. Letzteres kann als Fehler angesehen werden, da es das in C99 definierte Verhalten der Modifikatoren ändert. .P Einige Kombinationen der in C99 definierten Typ\-Modifikatoren und Umwandlungskennzeichner ergeben keinen Sinn (z.B. \fB%Ld\fP). Obwohl sie unter Linux ein gut definiertes Verhalten haben könnten, muss dies auf anderen Systemen nicht der Fall sein. Daher ist es normalerweise besser, Modifikatoren zu verwenden, die überhaupt nicht durch C99 definiert sind, d.h. \fBq\fP anstelle von \fBL\fP in Kombination mit den Umwandlungen \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP und \fBX\fP oder \fBll\fP. .P Die Verwendung von \fBq\fP ist nicht identisch zu der auf 4.4BSD, da es in »float«\-Umwandlungen äquivalent zu \fBL\fP verwandt werden kann. .SH BEISPIELE Um den dynamischen Reservierungs\-Umwandlungskennzeichner zu verwenden, geben Sie \fBm\fP als Längenmodifikator an (daher \fB%ms\fP oder \fB%m[\fP\fIBereich\fP\fB]\fP). Der Aufrufende muss \fBfree\fP(3) für die zurückgelieferte Zeichenkette aufrufen, wie im folgenden Beispiel: .P .in +4n .EX char *p; int n; \& errno = 0; n = sscanf(str, "%m[a\-z]", &p); if (n == 1) { printf("gelesen: %s\[rs]n", p); free(p); } else if (errno != 0) { perror("sscanf"); } else { fprintf(stderr, "Keine passenden Zeichen\[rs]n"); } .EE .in .P Wie im obigen Beispiel gezeigt, ist der Aufruf von \fBfree\fP(3) nur notwendig, wenn der Aufruf \fBsscanf\fP() erfolgreich eine Zeichenkette gelesen hat. .SH "SIEHE AUCH" \fBgetc\fP(3), \fBprintf\fP(3), \fBsetlocale\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3), \fBstrtoul\fP(3) .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .