Annotation of cci/usr/src/man/man3/scanf.3s, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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