1 .\" Copyright (c) 1990, 1991 The Regents of the University of California.
2 .\" All rights reserved.
4 .\" This code is derived from software contributed to Berkeley by
5 .\" Chris Torek and the American National Standards Committee X3,
6 .\" on Information Processing Systems.
8 .\" Redistribution and use in source and binary forms, with or without
9 .\" modification, are permitted provided that the following conditions
11 .\" 1. Redistributions of source code must retain the above copyright
12 .\" notice, this list of conditions and the following disclaimer.
13 .\" 2. Redistributions in binary form must reproduce the above copyright
14 .\" notice, this list of conditions and the following disclaimer in the
15 .\" documentation and/or other materials provided with the distribution.
16 .\" 3. All advertising materials mentioning features or use of this software
17 .\" must display the following acknowledgement:
18 .\" This product includes software developed by the University of
19 .\" California, Berkeley and its contributors.
20 .\" 4. Neither the name of the University nor the names of its contributors
21 .\" may be used to endorse or promote products derived from this software
22 .\" without specific prior written permission.
24 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 .\" @(#)scanf.3 6.14 (Berkeley) 1/8/93
38 .\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu
39 .\" modified to resemble the GNU libio setup used in the Linux libc
40 .\" used in versions 4.x (x>4) and 5 Helmut.Geyer@iwr.uni-heidelberg.de
42 .\" Translated to German Sun Feb 23 1997 by Patrick Rother <krd@gulu.net>
44 .TH SCANF 3 "3. Januar 1997" "LINUX MANPAGE" "Bibliotheksfunktionen"
46 scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf \- Eingabeformatierung
51 .BI "int scanf( const char *" format ", ..." );
53 .BI "int fscanf( FILE *" stream ", const char *" format ", ..." );
55 .BI "int sscanf( const char *" str ", const char *" format ", ..." );
57 .B #include <stdarg.h>
58 .BI "int vscanf( const char *" format ", va_list " ap );
60 .BI "int vsscanf( const char *" str ", const char *" format ", va_list " ap );
62 .BI "int vfscanf( FILE *" stream ", const char *" format ", va_list " ap );
67 prüft Eingaben in Bezug auf ein
69 wie unten beschrieben. Dieses Format darf
70 .IR "Umwandlungsspezifikationen"
71 enthalten; die Ergebnisse solcher Umwandlungen, falls vorhanden, werden durch
74 -Argumente gespeichert. Die Funktion
76 liest Eingaben vom Standardeingabekanal
79 liest Eingaben von dem Streamzeiger
83 liest ihre Eingaben von dem String, auf den
89 verhält sich analog zu
91 und liest Eingaben von dem Streamzeiger
93 wobei eine variable Argumentliste von Zeigern benutzt wird (siehe
97 liest eine variable Argumentliste von der Standardeingabe und die Funktion
99 liest von einem String; diese sind analog zu den Funktionen
104 Jedes folgende Argument
106 muss genau zu jedem folgenden Umwandlungsspezifakator passen
107 (siehe `unterdrücken' unten). Jede Umwandlung wird durch das Zeichen
109 (Prozentzeichen) eingeleitet. Der String
111 darf auch andere Zeichen enthalten. Leerräume (wie Leerzeichen,
112 Tabulatoren oder Zeilenumbrüche) im String
114 passen zu einem Freiraum jeder Größe, eingeschlossen keinem Freiraum,
116 Alles andere passt nur zu sich selbst. Einlesen der Daten stoppt, wenn
117 ein Eingabezeichen nicht zu einem Formatzeichen passt. Einlesen stoppt auch,
118 wenn die Umwandlung nicht durchgeführt werden kann (siehe unten).
122 welches eine Umwandlung einleitet, dürfen einige
127 Unterdrückt Zuordnung. Die folgende Umwandlung wird wie gewohnt durchgeführt,
128 jedoch wird keine Zeiger benutzt; das Ergebnis der Umwandlung wird verworfen.
131 Zeigt an, dass die Umwandlung
133 sein wird; der nötige Speicher für den String wird malloc't, und
134 der Zeiger darauf wird der Zeigervariablen
136 zugeordnet, welche nicht initialisiert zu werden braucht.
137 Dieses Flag existiert nicht in
141 Zeigt an, dass die Umwandlung eine von
145 sein wird, und der nächste Zeiger ein Zeiger auf ein
152 Zeigt an, dass die Umwandlung eine von
156 sein wird, und der nächste Zeiger ein Zeiger auf ein
161 oder dass die Umwandlung eine von
163 sein wird, und der nächste Zeiger ein Zeiger auf ein
168 Angabe von zwei Flags
170 in äquivalent zum Flag
174 Zeigt an, dass die Umwandlung eine von
176 sein wird und der nächste Zeiger ein Zeiger auf ein
178 ist, oder dass die Umwandlung eine von
180 sein wird und der nächste Zeiger ein Zeiger auf ein
183 (Beachte, dass "long long" kein Typ nach
185 ist. Jedes Programm, das dies benutzt wird nicht auf alle anderen
186 Architekturen übertragbar sein.)
190 Dieses Flag existiert nicht in
193 Zusätzlich zu diesen Flags darf es eine optionale maximale Feldgröße geben,
194 die als dezimale Ganzzahl zwischen dem
196 und der Umwandlung angegeben wird. Wenn keine Größe angegeben ist wird per
197 Vorgabe `unendlich' benutzt (mit einer Ausnahme, siehe unten); anderenfalls
198 werden höchstens diese Anzahl von Zeichen durch die Umwandlung verarbeitet.
199 Bevor die Umwandlung beginnt übergehen die meisten Umwandlungen Leerräume;
200 diese Leerräume zählen nicht gegenüber der Feldgröße.
202 Die folgenden Umwandlungen sind verfügbar:
205 Findet ein Zeichen `%'. Das heißt, `%\&%' im Formatstring findet ein
206 einzelnes Zeichnen `%'. Es findet keine Umwandlung statt und Zuweisung
210 Findet eine optional verzeichenbehaftete dezimale Ganzzahl;
211 der nächste Zeiger muss ein Zeiger auf
218 dies existiert nur aus Kompatibilitätsgründen.
221 Findet eine optional verzeichenbehaftete Ganzzahl; der nächste Zeiger muss
225 Die Ganzzahl wird eingelesen zur Basis 16 wenn sie mit `0x' oder `0X' beginnt,
226 zur Basis 8 wenn sie mit `0' beginnt, anderenfalls zur Basis 10. Nur Zeichen,
227 die zur Basis passen, werden benutzt.
230 Findet eine vorzeichenfreie oktale Ganzzahl; der nächste Zeiger muss ein Zeiger
236 Findet eine vorzeichenfreie dezimale Ganzzahl; der nächste Zeiger muss ein
242 Findet eine vorzeichenfreie hexadezimale Ganzzahl; der nächste Zeiger muss ein
252 Findet eine optional vorzeichenbehaftete Fließkommazahl; der nächste Zeiger muss ein
270 Findet eine Folge von Zeichen, die keinen Leerraum darstellen; der nächste
271 Zeiger muss Zeiger auf
273 sein, und das Feld muss groß genug sein um die Folge und das abschließende
275 Zeichen aufzunehmen. Der Eingabestring stoppt an Leerräumen oder an der
276 maximalen Feldgrößen, je nachdem, was zuerst auftritt.
279 Findet eine Folge von
281 Zeichen (Vorgabe 1); der nächste Zeiger muss Zeiger auf
283 sein und es muss genug Platz für alle Zeichen existieren. (Es wird kein
286 angehängt.) Das gewöhnliche Unterdrücken vor einleitenden Leerräumen
287 wird unterdrückt. Um Leerräume zu überspringen benutze explizit ein
288 Leerzeichen im Formatstring.
291 Findet eine nichtleere Folge von Zeichen aus der angegebenen Menge von zu
292 akzeptierenden Zeichen; der nächste Zeiger muss Zeiger auf
294 sein und es muss genug Platz für alle Zeichen des Strings sein, plus
297 Zeichen. Das gewöhnliche Unterdrücken vor einleitenden Leerräumen
298 wird unterdrückt. Der Strings soll aus Zeichen zusammengesetzt werden, die
299 (nicht) in einer bestimmten Menge sind; die Menge wird definiert durch die
300 Zeichen einer öffnenden
302 und einer schließenden
305 .I schließt diese Zeichen aus
306 wenn das erste Zeichen nach der öffnenden Klammer ein circumflex
309 Im einer schließende Klammer in der Menge zu haben, gib sie als erstes
310 Zeichen hinter der öffnenden Klammer oder dem circumflex an; jede andere
311 Position beendet die Menge.
314 ist auch ein spezielles Zeichen; wenn er zwischen zwei anderen Zeichen
315 steht fügt er alle Zeichen zwischen den beiden zu der Menge hinzu.
316 Um einen Bindestrich zuzufügen, gib ihn als letztes Zeichen vor der
317 schließenden Klammer an. Zum Beispiel meint `[^]0-9-]' `alles außer
318 schließender Klammen, Null bis Neun, und Bindestrich'
319 Der String endet bei Auftreten eines Zeichens, das sich nicht in der Menge
320 befindet (oder bei circumflex bei Auftreten eines Zeichens, das sich in der
321 Menge befindet), oder bei Erreichen der Feldgröße.
324 Findet einen Zeigerwert (wie durch `%p' ausgegeben bei
326 der nächste Zeiger muss ein Zeiger auf
331 Nichts wird erwartet; stattdessen wird die Anzahl der Zeichen, die bis jetzt
332 eingelesen wurden, im nächsten Zeiger gespeichert, welcher ein Zeiger auf
337 Umwandlung, obwohl sie durch das Flag
339 unterdrückt werden kann.
342 Diese Funktionen geben die Anzahl der zugewiesenen Eingabeelemente zurück,
343 welche kleiner als gewünscht sein kann, oder auch Null im Fall einer
344 fehlgeschlagenen Suche.
345 Null zeigt an, dass obwohl Eingabe verfügbar war, keine Zuweisung erfolgt
346 ist; typischerweise durch ungültige Eingabezeichen, wie ein alphabetisches
347 Zeichen für eine Umwandlung %d'. Der Wert
349 wird zurückgegeben wenn ein Eingabefehler vor einer Umwandlung auftritt,
350 wie z.B. ein Dateiende. Wenn ein Fehler oder Dateiende auftritt, nachdem
351 eine Umwandlung begonnen hat, wird die Anzahl der bis dahin erfolgreich
352 umgewandelten Zeichen zurückgegeben.
365 sind konform zu ANSI C3.159-1989 (``ANSI C'').
375 oder die Benutzung von
377 in Ganzzahlumwandlungen die GNU-Notation ist.
379 Die Linuxversion dieser Funktionen basiert auf der
382 Bibliothek. Eine konkretere Beschreibung findet sich in der
386 .I libc (glibc-1.08).
388 Alle Funktionen sind vollkommen konform zu ANSI C3.159-1989, stellen jedoch
389 die zusätzliche Flags
393 , sowie ein zusätzliches Verhalten der Flags
397 zur Verfügung. Letzteres kann als Bug angesehen werden, da es das Verhalten
398 der Flags verändert, die in ANSI C3.159-1989 definiert sind.
400 Einige Kombinationen von Flags, die durch
402 definiert sind, machen in
406 Während sie ein wohldefiniertes Verhalten unter Linux haben, braucht dies
407 auf anderen Architekturen nicht der Fall zu sein. Daher ist es gewöhnlich
408 besser Flags zu benutzen, die gar nicht durch
410 definiert sind, d.h. benutze
414 in Kombination mit Umwandlungen
421 ist nicht die gleiche wie bei
423 da die in Fließkommaumwandlungen äquivalent zu