Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ printf(3S) — bsd — mips UMIPS RISC/os 4.52

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

putc(3S)

scanf(3S)



PRINTF(3S-BSD)      RISC/os Reference Manual       PRINTF(3S-BSD)



NAME
     printf, fprintf, sprintf - formatted output conversion

SYNOPSIS
     #include <stdio.h>

     printf(format [, arg ] ...  )
     char *format;

     fprintf(stream, format [, arg ] ...  )
     FILE *stream;
     char *format;

     sprintf(s, format [, arg ] ...  )
     char *s, *format;

     #include <varargs.h>

     vprintf(format, args)
     char *format;
     valist args;

     vfprintf(stream, format, args)
     FILE *stream;
     char *format;
     valist args;

     vsprintf(s, format, args)
     char *s, *format;
     valist args;

DESCRIPTION
     printf places output on the standard output stream stdout.
     fprintf places output on the named output stream.  sprintf
     places `output' in the string s, followed by the character
     `\0'.  Alternate forms, in which the arguments have already
     been captured using the variable-length argument facilities
     of varargs(3), are available under the names vprintf,
     vfprintf, and vsprintf.

     Each of these functions converts, formats, and prints its
     arguments after the first under control of the first argu-
     ment.  The first argument is a character string which con-
     tains two types of objects:  plain characters, which are
     simply copied to the output stream, and conversion specifi-
     cations, each of which causes conversion and printing of the
     next successive arg printf.

     Each conversion specification is introduced by the character
     %.  The remainder of the conversion specification includes
     in the following order




                         Printed 1/15/91                   Page 1





PRINTF(3S-BSD)      RISC/os Reference Manual       PRINTF(3S-BSD)



     +    Zero or more of the following flags:

          +    a `#' character specifying that the value should
               be converted to an ``alternate form''.  For c, d,
               s, and u, conversions, this option has no effect.
               For o conversions, the precision of the number is
               increased to force the first character of the out-
               put string to a zero.  For x(X) conversion, a
               non-zero result has the string 0x(0X) prepended to
               it.  For e, E, f, g, and G, conversions, the
               result will always contain a decimal point, even
               if no digits follow the point (normally, a decimal
               point only appears in the results of those conver-
               sions if a digit follows the decimal point).  For
               g and G conversions, trailing zeros are not
               removed from the result as they would otherwise
               be;

          +    a minus sign `-' which specifies left adjustment
               of the converted value in the indicated field;

          +    a `+' character specifying that there should
               always be a sign placed before the number when
               using signed conversions;

          +    a space specifying that a blank should be left
               before a positive number during a signed conver-
               sion.  A `+' overrides a space if both are used;

          +    a zero `0' character indicating that zero-padding
               should be used rather than blank-padding.  A `-'
               overrides a `0' if both are used;

     +    an optional digit string specifying a field width; if
          the converted value has fewer characters than the field
          width it will be blank-padded on the left (or right, if
          the left-adjustment indicator has been given) to make
          up the field width (note that a leading zero is a flag,
          but an embedded zero is part of a field width);

     +    an optional period, followed by an optional digit
          string giving a precision which specifies the number of
          digits to appear after the decimal point, for e- and
          f-conversion, or the maximum number of characters to be
          printed from a string; if the digit string is missing,
          the precision is treated as zero;

     +    the character l specifying that a following d, i, o, x,
          or u corresponds to a long integer arg, or that a fol-
          lowing n corresponds to a pointer to a long integer
          arg;




 Page 2                  Printed 1/15/91





PRINTF(3S-BSD)      RISC/os Reference Manual       PRINTF(3S-BSD)



     +    a character which indicates the type of conversion to
          be applied.

     A field width or precision may be `*' instead of a digit
     string.  In this case an integer arg supplies the field
     width or precision.

     The conversion characters and their meanings are

     dox  The integer arg is converted to signed decimal,
          unsigned octal, or unsigned hexadecimal notation
          respectively.

     i    An alias for `d'.

     f    The float or double arg is converted to decimal nota-
          tion in the style `[-]ddd.ddd' where the number of d's
          after the decimal point is equal to the precision
          specification for the argument.  If the precision is
          missing, 6 digits are given; if the precision is expli-
          citly 0, no digits and no decimal point are printed.

     eE   The float or double arg is converted in the style
          `[-]d.ddde+dd' where there is one digit before the
          decimal point and the number after is equal to the pre-
          cision specification for the argument; when the preci-
          sion is missing, 6 digits are produced.  An uppercase E
          is used for `E' conversion.

     gG   The float or double arg is printed in style f or in
          style e (E) whichever gives full precision in minimum
          space.

     c    The character arg is printed.

     s    Arg is taken to be a string (character pointer) and
          characters from the string are printed until a null
          character or until the number of characters indicated
          by the precision specification is reached; however if
          the precision is 0 or missing all characters up to a
          null are printed.

     u    The unsigned integer arg is converted to decimal and
          printed (the result will be in the range 0 through MAX-
          UINT, where MAXUINT equals 4294967295 on a MIPS R2000).

     n    Arg is taken to be a pointer to an integer (possibly
          long) through which is stored the number of characters
          written to the output stream (or string) so far by this
          call to printf (or fprintf, etc.).

     p    Arg is taken to be a pointer to void; it is printed in



                         Printed 1/15/91                   Page 3





PRINTF(3S-BSD)      RISC/os Reference Manual       PRINTF(3S-BSD)



          style x.

     %    Print a `%'; no argument is converted.

     In no case does a non-existent or small field width cause
     truncation of a field; padding takes place only if the
     specified field width exceeds the actual width.  Characters
     generated by printf are printed as by putc(3S).

RETURN VALUE
     The functions all return EOF(-1) if an error occurred.
     sprintf returns the first argument. vprintf, vfprintf, and
     vsprintf return the number of characters printed.

EXAMPLES
     To print a date and time in the form `Sunday, July 3,
     10:02', where weekday and month are pointers to null-
     terminated strings:

          printf("%s, %s %d, %02d:%02d", weekday, month, day,
               hour, min);

     To print pi to 5 decimals:

          printf("pi = %.5f", 4*atan(1.0));

SEE ALSO
     putc(3S), scanf(3S)

BUGS
     The functions still supports %D, %O, and %U.  Do not use
     these formats, as they will be disappearing soon.























 Page 4                  Printed 1/15/91



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026