Annotation of researchv10dc/man/adm/man3/scanf.3, revision 1.1.1.1

1.1       root        1: .TH SCANF 3S
                      2: .CT 2 file_io data_man
                      3: .SH NAME
                      4: scanf, fscanf, sscanf \(mi formatted input
                      5: .SH SYNOPSIS
                      6: .nf
                      7: .B #include <stdio.h>
                      8: .PP
                      9: .B
                     10: scanf(format [ , pointer ] ... )
                     11: .B char *format;
                     12: .PP
                     13: .B
                     14: fscanf(stream, format [ , pointer ] ... )
                     15: .B FILE *stream;
                     16: .B char *format;
                     17: .PP
                     18: .B
                     19: sscanf(s, format [ , pointer ] ... )
                     20: .B char *s, *format;
                     21: .fi
                     22: .SH DESCRIPTION
                     23: .I Scanf
                     24: reads from the standard input stream
                     25: .IR stdin .
                     26: .I Fscanf
                     27: reads from the named input
                     28: .IR stream .
                     29: .I Sscanf
                     30: reads from the character string
                     31: .IR s .
                     32: Each function reads characters, interprets
                     33: them according to a format, and stores the results in its arguments.
                     34: Each expects as arguments
                     35: a control string
                     36: .I format,
                     37: described below,
                     38: and a set of
                     39: arguments, normally pointers,
                     40: indicating where the converted input should be stored.
                     41: .PP
                     42: The
                     43: control string
                     44: usually contains
                     45: conversion specifications, which are used to direct interpretation
                     46: of input sequences.
                     47: The control string may contain:
                     48: .TP 4
                     49: 1.
                     50: Blanks, tabs or newlines,
                     51: which match optional white space in the input.
                     52: .TP 4
                     53: 2.
                     54: An ordinary character (not
                     55: .LR % )
                     56: which must match
                     57: the next character of the input stream.
                     58: .TP 4
                     59: 3.
                     60: Conversion specifications, consisting of the
                     61: character
                     62: .BR % ,
                     63: an optional assignment suppressing character
                     64: .BR * ,
                     65: an optional numerical maximum field width, and a conversion
                     66: character.
                     67: .PP
                     68: A conversion specification directs the conversion of the
                     69: next input field; the result
                     70: is placed in the variable pointed to by the corresponding argument,
                     71: unless assignment suppression was
                     72: indicated by
                     73: .BR * .
                     74: Conversions other than
                     75: .L c
                     76: and
                     77: .L [
                     78: skip white space and consume
                     79: non-white-space characters up
                     80: to the next inappropriate character or until the field
                     81: width, if specified, is exhausted.
                     82: The field width is either an integer constant or
                     83: .LR ! .
                     84: In the latter case, the width is taken from an integer argument
                     85: that precedes the next pointer argument.
                     86: .PP
                     87: The conversion character indicates the interpretation of the
                     88: input field; the corresponding pointer argument must
                     89: usually be of a restricted type.
                     90: The following conversion characters are legal:
                     91: .TP 4
                     92: .B  %
                     93: A single 
                     94: .L %
                     95: is expected
                     96: in the input at this point;
                     97: no assignment is done.
                     98: .TP 4
                     99: .B  d
                    100: A decimal integer is expected;
                    101: the corresponding argument should be an integer pointer.
                    102: .TP 4
                    103: .B  o
                    104: an octal integer is expected;
                    105: the corresponding argument should be an integer pointer.
                    106: .TP 4
                    107: .B  x
                    108: A hexadecimal integer is expected;
                    109: the corresponding argument should be an integer pointer.
                    110: .ti -0.2i
                    111: .TP 4
                    112: .B  s
                    113: A character string is expected;
                    114: the corresponding argument should be a character pointer
                    115: pointing to an array of characters large enough to accept the
                    116: string and a terminating
                    117: .LR \e0 ,
                    118: which will be added.
                    119: The input field is terminated by a space character
                    120: or a newline.
                    121: .TP 4
                    122: .B  c
                    123: A character is expected; the
                    124: corresponding argument should be a character pointer.
                    125: If a field width is given, the corresponding argument
                    126: should refer to a character array, and the
                    127: indicated number of characters is read.
                    128: .ne3
                    129: .TP 4
                    130: .B e
                    131: .br
                    132: .ns
                    133: .TP
                    134: f
                    135: A
                    136: floating point number is expected;
                    137: the next field is converted accordingly and stored through the
                    138: corresponding argument, which should be a pointer to a
                    139: .IR float .
                    140: The input format for
                    141: floating point numbers is
                    142: an optionally signed
                    143: string of digits
                    144: possibly containing a decimal point, followed by an optional
                    145: exponent field consisting of an
                    146: .B E
                    147: or
                    148: .B e
                    149: followed by an optionally signed integer.
                    150: .ne 3
                    151: .TP 4
                    152: .B  [
                    153: .br
                    154: .ns
                    155: .TP
                    156: .B [^
                    157: A character string is expected.
                    158: The left bracket (or bracket and circumflex)
                    159: is followed by a set of characters and a right
                    160: bracket.
                    161: When the set is introduced by
                    162: .B [
                    163: (or
                    164: .BR [^ ),
                    165: the string consists only
                    166: of characters in (or not in) the set.
                    167: The corresponding argument must point to a character array.
                    168: .PP
                    169: The conversion characters
                    170: .BR d ,
                    171: .B o
                    172: and
                    173: .B x
                    174: may be preceded by
                    175: .B l
                    176: to indicate that a pointer to
                    177: .B long
                    178: rather than to
                    179: .B int
                    180: is in the argument list.
                    181: Similarly, the conversion characters
                    182: .B e
                    183: or
                    184: .B f
                    185: may be preceded by
                    186: .B l
                    187: to indicate a pointer to
                    188: .B double
                    189: rather than to
                    190: .BR float .
                    191: The conversion characters
                    192: .BR d ,
                    193: .B o
                    194: and
                    195: .B x
                    196: may be preceded by
                    197: .B h
                    198: to indicate a pointer to
                    199: .BR short .
                    200: .PP
                    201: The
                    202: .I scanf
                    203: functions return the number of successfully matched and assigned input
                    204: items.
                    205: This can be used to decide how many input items were found.
                    206: The constant
                    207: .SM
                    208: .B EOF
                    209: is returned upon end of input; note that this is different
                    210: from
                    211: .LR 0 ,
                    212: which means that no conversion was done;
                    213: if conversion was intended, it was frustrated by an
                    214: inappropriate character in the input.
                    215: .PP
                    216: For example, the call
                    217: .nf
                    218: .ft L
                    219:        int i; float x; char name[50];
                    220:        scanf("%d%f%s", &i, &x, name);
                    221: .fi
                    222: .ft P
                    223: .PP
                    224: with the input line
                    225: .IP
                    226: .L
                    227: 25   54.32E\(mi1  thompson
                    228: .PP
                    229: will assign to
                    230: .I i
                    231: the value
                    232: .LR 25 ,
                    233: .I x
                    234: the value
                    235: .LR 5.432 ,
                    236: and
                    237: .I name
                    238: will contain
                    239: .LR thompson\e0 .
                    240: Or,
                    241: .nf
                    242: .ft L
                    243:        int i; float x; char name[50];
                    244:        scanf("%2d%f%*d%[1234567890]", &i, &x, name);
                    245: .fi
                    246: .ft P
                    247: .PP
                    248: with input
                    249: .IP
                    250: \fL56789 0123 56a72\fP
                    251: .PP
                    252: will assign
                    253: .L 56
                    254: to
                    255: .IR i ,
                    256: .L 789.0
                    257: to
                    258: .IR x ,
                    259: skip
                    260: .LR 0123 ,
                    261: and place the string
                    262: .L 56\e0
                    263: in
                    264: .IR name .
                    265: The next call to
                    266: .I getchar
                    267: will return 
                    268: .LR a .
                    269: .SH "SEE ALSO"
                    270: .IR atof (3),
                    271: .IR stdio (3)
                    272: .SH DIAGNOSTICS
                    273: The
                    274: .I scanf
                    275: functions return
                    276: .B EOF
                    277: on end of input,
                    278: and a short count for missing or illegal data items.
                    279: .SH BUGS
                    280: The success of literal matches and suppressed
                    281: assignments is not directly
                    282: determinable.
                    283: .br
                    284: There is no
                    285: .LR %# .
                    286: .br
                    287: When no maximum field width is given in a
                    288: .L %s
                    289: or
                    290: .L %[]
                    291: conversion specification, improper input can
                    292: overrun the output string and corrupt the program in
                    293: arbitrarily malicious ways.
                    294: The best alternative,
                    295: .LR %!s ,
                    296: is nonstandard.
                    297: .br
                    298: A deprecated usage allows upper-case conversion characters
                    299: as equivalents for lower-case characters preceded by
                    300: .LR l .

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.