printf
			printf( "format string " [ , expression ] ... );
- where:
    
- The format string is a quoted string, optionally containing one or more format specifiers, beginning with % symbols.
- After the format string come zero or more expressions to be printed. 
-  Specifically there must be exactly as many expressions 
following the format string as there are format specifiers in the 
string.
- Expressions to be printed may be any combination of constants and variables that match the data types of the format specifiers.
 
printf format specifiers
- printf format specifiers take the form of 
			%[flags][width][.precision][length]specifier
- where:
    
- specifier is the most important and only required part, indicating the type of data to be printed. e.g. "%f"
        
- See below for a complete table
 
- width specifies the total number of spaces to use to print the number, filling in with blanks if necssary
        
- Example: "%15f" would print a float in a space 15 characters wide
- If an asterisk ( * ) is used, then one of the data expressions is used to determine the width used.
 
- .precision indicates how many digits of a number to print, or sometimes the number to the right of the decimal point.
        
- Examples: 
            
- "%15.3f" would print 10 * pi as 31.416, with three digits to the right of the decimal point.              
- %15.3e" would print 10 * pi as 3.14e1, with three total digits of precision
 
- If a dot asterisk ( .* ) is used, then one of the data expressions is used to determine the width used.
 
- [flags] are optional, and can include::
        
- A minus sign ( - ) to left justify the output. Default is right justified.
- A plus sign ( + ) to force a sign to be printed.
- ( space ) to inhibit printing of the sign
- zero ( 0 ) to left pad the number with zeros instead of spaces
- hash ( # ) serves different purposes depending on the specifier used.
            
- With octal or hexidecimal output, specifies a leading 0 or 0x for non-zero data values
- With floating point types, requires printing a decimal point even if there are no digits following it.
 
 
- [length] is a subspecifier for unsigned, short, long, etc. types. See table below
 
  
printf specifiers
    Note: CS 107 students are not responsible for knowing the a, A, n, or p specifiers.
  
      
        
            | specifier | Output | Example | 
            | d or i | Signed decimal integer | 392 | 
            | u | Unsigned decimal integer | 7235 | 
            | o | Unsigned octal | 610 | 
            | x | Unsigned hexadecimal integer | 7fa | 
            | X | Unsigned hexadecimal integer (uppercase) | 7FA | 
            | f | Decimal floating point, lowercase | 392.65 | 
            | F | Decimal floating point, uppercase | 392.65 | 
            | e | Scientific notation (mantissa/exponent), lowercase | 3.9265e+2 | 
            | E | Scientific notation (mantissa/exponent), uppercase | 3.9265E+2 | 
            | g | Use the shortest representation: %e or %f | 392.65 | 
            | G | Use the shortest representation: %E or %F | 392.65 | 
            | a | Hexadecimal floating point, lowercase | -0xc.90fep-2 | 
            | A | Hexadecimal floating point, uppercase | -0XC.90FEP-2 | 
            | c | Character | a | 
            | s | String of characters | sample | 
            | p | Pointer address | b8000000 | 
            | n | Nothing printed. The corresponding argument must be a pointer to a signed int.
 The number of characters written so far is stored in the pointed location.
 |  | 
            | % | A % followed by another % character will write a single % to the stream. | % | 
      
        
      
printf length sub-specifiers
Note:  CS 107 students are not responsible for knowing j, z, or t length specifiers, or wide character types
    
      
          |  | specifiers | 
          | length | d i | u o x X | f F e E g G a A | c | s | p | n | 
          | (none) | int | unsigned int | double | int | char* | void* | int* | 
          | hh | signed char | unsigned char |  |  |  |  | signed char* | 
          | h | short int | unsigned short int |  |  |  |  | short int* | 
          | l | long int | unsigned long int |  | wint_t | wchar_t* |  | long int* | 
          | ll | long long int | unsigned long long int |  |  |  |  | long long int* | 
          | j | intmax_t | uintmax_t |  |  |  |  | intmax_t* | 
          | z | size_t | size_t |  |  |  |  | size_t* | 
          | t | ptrdiff_t | ptrdiff_t |  |  |  |  | ptrdiff_t* | 
          | L |  |  | long double |  |  |  |  | 
    
  
  
scanf
			printf( "format string " [ , expression ] ... );
- where:
    
- The format string is a quoted string, normally consisting only of one or more format specifiers, beginning with % symbols.
- After the format string come zero or more expressions to be printed. 
-  Specifically there must be exactly as many expressions 
following the format string as there are format specifiers in the 
string.
- Expressions in scanf need to be memory addresses of where the 
scanned data is to be stored, which are usually generated by applying 
the "address of" operator, &, to a variable name, for example, 
&X yields the address of X, i.e. the location of X in memory.
 
-  
Scanf format specifiers
- scanf format specifiers take the form of 
			%[*][width][length]specifier
- where:
    
- specifier is the most important and only required part, indicating the type of data to be scanned. e.g. "%f"
        
- See below for a complete table
 
- Asterisk, *, indicates to read in the data from the input stream, but not store it. ( I.e. read and discard )
- width specifies the maximum number of characters to read in
- length is a modifier for unsigned, short, long,etc data types.
        
- See below for a complete table
 
 
  
scanf specifiers
Note: CS 107 students are not required to know the a,p, [ ], [^ ], or n specifiers
  
    
        | specifier | Description | Characters extracted | 
        | i, u | Integer | Any number of digits, optionally preceded by a sign (+ or -). Decimal digits assumed by default (0-9), but a 0 prefix introduces octal digits (0-7), and 0x hexadecimal digits (0-f).
 | 
        | d | Decimal integer | Any number of decimal digits (0-9), optionally preceded by a sign (+ or -). | 
        | o | Octal integer | Any number of octal digits (0-7), optionally preceded by a sign (+ or -). | 
        | x | Hexadecimal integer | Any number of hexadecimal digits (0-9, a-f, A-F), optionally preceded by 0x or 0X, and all optionally preceded by a sign (+ or -). | 
        | f, e, g | Floating point number | A series of decimal digits (or hexadecimal,
 if preceded by 0x or 0X), optionally containing a decimal point, 
optionally preceeded by a sign (+ or -) and optionally followed by the e
 or E character and a decimal integer (or p or P and an hexadecimal 
integer). Or any other sequence supported by strtod. | 
        | a | 
        | c | Character | The next character. If a width other than 1 is specified, the function reads exactly width
 characters and stores them in the successive locations of the array   
passed as argument. No null character is appended at the end. | 
        | s | String of characters | Any number of non-whitespace characters, stopping at the first whitespace character found. A terminating null character is automatically added at the end of the stored sequence. | 
        | p | Pointer address | A sequence of   characters representing a 
pointer. The particular format used depends on   the system and library 
implementation, but it is the same as the one   used to format %p in fprintf. | 
        | [characters] | Scanset | Any number of the characters specified between the brackets. A dash (-) that is not the first character may produce non-portable behavior in some library implementations.
 | 
        | [^characters] | Negated scanset | Any number of characters none of them specified as characters between the brackets. | 
        | n | Count | No input is consumed. The number of characters written so far is stored in the pointed location.
 | 
        | % | % | A % followed by another % matches a single %. | 
  
  
scanf length specifiers
Note: CS 107 students are not required to know the j, z, or t specifiers, or wide ( long ) character types
  
    
        | 
 | specifiers | 
        | length | d i | u o x | f e g a | c s [] [^] | p | n | 
        | (none) | int* | unsigned int* | float* | char* | void** | int* | 
        | hh | signed char* | unsigned char* |  |  |  | signed char* | 
        | h | short int* | unsigned short int* |  |  |  | short int* | 
        | l | long int* | unsigned long int* | double* | wchar_t* |  | long int* | 
        | ll | long long int* | unsigned long long int* |  |  |  | long long int* | 
        | j | intmax_t* | uintmax_t* |  |  |  | intmax_t* | 
        | z | size_t* | size_t* |  |  |  | size_t* | 
        | t | ptrdiff_t* | ptrdiff_t* |  |  |  | ptrdiff_t* | 
        | L |  |  | long double* |  |  |  | 
  
Related functions
- fprintf and fscanf are used for formatted data transfer into and out of files respectively.
- sprintf and sscanf are used for formatted data transfer into and 
out of memory respectively, e.g. "printng" into a character array.
- getc,putc, getchar and putchar transfer individual characters, 
faster and at a more controlled level than printf( "%c", c ) and scanf( 
"%c", c ) respectively.
 
 
No comments:
Post a Comment