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