Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

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, vprintf, vfprintf, vsprintf - for-
          matted output conversion

SYNOPSIS
     #include <stdio.h>

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

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

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

     #include <varargs.h>

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

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

     vsprintf(s, format, args)
     char *s, *format;
     va_list 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 11/19/92                   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 output 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
           conversions 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 conversion.  A `+'
           overrides a space if both are used;

        +  a zero `0' character indicating that zero-padding
           should be used rather than blank-padding.  A `-' over-
           rides 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 follow-
        ing n corresponds to a pointer to a long integer arg;

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




 Page 2                 Printed 11/19/92





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



     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
          style x.

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



                        Printed 11/19/92                   Page 3





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



     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 11/19/92



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