0% found this document useful (0 votes)
117 views

Basic I/O - Printf

This document summarizes material from a lecture on input and output formatting in C using printf and scanf. It discusses: - The printf function and format control strings for integer, floating point, character, and string conversions. - Field widths, precision, flags, and other formatting options that can be used with printf. - Examples are provided to demonstrate different conversion specifiers and formatting options. - The material is part of a lecture on basic input/output in C presented by Dale Roberts for a computer science course.

Uploaded by

Anjali Naidu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
117 views

Basic I/O - Printf

This document summarizes material from a lecture on input and output formatting in C using printf and scanf. It discusses: - The printf function and format control strings for integer, floating point, character, and string conversions. - Field widths, precision, flags, and other formatting options that can be used with printf. - Examples are provided to demonstrate different conversion specifiers and formatting options. - The material is part of a lecture on basic input/output in C presented by Dale Roberts for a computer science course.

Uploaded by

Anjali Naidu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
You are on page 1/ 19

Department of Computer and Information Science,

School of Science, IUPUI

CSCI 230

Basic I/O printf()


Dale Roberts, Lecturer
Department of Computer and Information Science

IUPUI

Dale Roberts

Formatted Input/Output
In this chapter
Presentation of results
scanf and printf
Streams (input and output)
gets, puts, getchar, putchar (in <stdio.h>)

Streams

Sequences of characters organized into lines


Each line consists of zero or more characters and ends with
newline character
ANSI C must support lines of at least 254 characters
Performs all input and output
Can often be redirected
Standard input keyboard
Standard output screen
Standard error screen
Dale Roberts

Formatting Output with printf


printf
Precise output formatting
Conversion specifications: flags, field
widths, precisions, etc.
Can perform rounding, aligning columns,
right/left justification, inserting literal
characters, exponential format, hexadecimal
format, and fixed width and precision

Dale Roberts

Formatting Output with printf

(cont.)

Format
printf( format-control-string, otherarguments);
Format control string: describes output format,
Ordinary characters: copy to output stream: printf(this is
an output\n);
Conversion specifications: leading with character %
Format:

%-w.plx

[-]: optional left justification, if exists


[w]: optional minimal width (wider if necessary). The
padding character is
blank normally and zero if the field
width was specified with a leading zero
[.]: optional separates field w and p
Dale Roberts

Formatting Output with printf

(cont.)

[p]: optional maximum field width for a string precision


of floating number
[l]: long integer
[x]:d decimal signed integer
i decimal signed integer (the d and i specifiers are
different when used
in scanf)
u decimal unsigned integer
x hexadecimal unsigned integer (0 9 and a f)
X unsigned hexadecimal integer (0 9 and A F)
h or l length modifiers; place before any integer
conversion specifier to
indicate that a short or
long integer is displayed respectively

Dale Roberts

h or l length modifiers; place before any integer


conversion specifier to
indicate that a short or
long integer is displayed respectively
o octal unsigned integer
f floating pointer number
g either f or e, whichever is shorter
c single character
s character string
e exponential floating pointer number
Other-arguments: correspond to each conversion specification in
format-control-string, such as variables.

Dale Roberts

Printing Integers
Whole number (no decimal point): 25, 0, -9
Positive, negative, or zero
Only minus sign prints by default

Example:

1 /* Fig 9.2: fig09_02.c */


2 /* Using the integer conversion specifiers */
3 #include <stdio.h>
4
5 main()
6 {
7
printf( "%d\n", 455 );
8
printf( "%i\n", 455 ); /* i same as d in
printf
*/
9
printf(
"%d\n", +455 );
10
printf( "%d\n", -455 );
11
printf( "%hd\n", 32000 );
12
printf( "%ld\n", 2000000000 );
13
printf( "%o\n", 455 );
14
printf( "%u\n", 455 );
15
printf( "%u\n", -455 );
16
printf( "%x\n", 455 );
17
printf( "%X\n", 455 );
18
19
20 }

Program
Output
455
455
455
-455
32000
2000000000
707
455
65081
1c7
1C7

Dale Roberts

Printing Floating-Point Numbers


Floating Point Number
Have a decimal point (33.5)
Exponential notation
(computer's version of
scientific notation)
150.3 is 1.503 x 10
in scientific
150.3 is 1.503E+02 in
exponential (%E stands for
exponent)
Can use %e or %E
%f : print floating point with
at least one digit to left of
decimal
%g (or G) : prints in f or e
with no trailing zeros
(1.2300 becomes 1.23)
Use exponential if exponent
less than -4, or greater than
or equal to precision (6 digits
by default)

Example:
1
2
3
4
5
6
7
8

/* Fig 9.4: fig09_04.c */


/* Printing floating-point numbers with
floating-point conversion specifiers */
#include <stdio.h>
int main()
{

9
10
11
12
13
14
15

16
17
18 }

Program Output

printf( "%e\n", 1234567.89 ); 1.234568e+006


printf( "%e\n", +1234567.89 ); 1.234568e+006
printf( "%e\n", -1234567.89 ); -1.234568e+006
printf( "%E\n", 1234567.89 ); 1.234568E+006
printf( "%f\n", 1234567.89 ); 1234567.890000
printf( "%g\n", 1234567.89 ); 1.23457e+006
1.23457E+006
printf( "%G\n", 1234567.89 );

return 0;

Dale Roberts

Printing Strings and Characters


%c

%s

Prints char argument


Cannot be used to print
the first character of a
string
Requires a pointer to
char as an argument
(line 8)
Cannot print a char
argument
Prints characters until
NULL ('\0')
encountered
Single quotes for
character constants ('z')
Double quotes for strings
"z" (which actually
contains two characters,
'z' and '\0')

Example:
1 /* Fig 9.5: fig09_05c */
2 /* Printing strings and characters */
3 #include <stdio.h>
4
5 int main()
6 {
7
char character = 'A';
8
char string[] = "This is a string";
9
const char *stringPtr = "This is also a
string";
10
11
printf( "%c\n", character );
12
printf( "%s\n", "This is a string" );
13
printf( "%s\n", string );
14
printf( "%s\n", stringPtr );
15
16
return 0;
17 }

Program Output

A
This is a string
This is a string
This is also a
string

Dale Roberts

Other Conversion Specifiers


%p
Displays pointer value (address)

%n
Stores number of characters already output by current printf statement
Takes a pointer to an integer as an argument
Nothing printed by a %n specification
Every printf call returns a value
Number of characters output
Negative number if error occurs

%%
Prints a percent sign

Dale Roberts

Example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&y
16
17
18
19
20
21
22
23

/* Fig 9.7: fig09_07.c */


Program Output
/* Using the p, n, and % conversion specifiers */
The value of ptr is 0065FDF0
#include <stdio.h>
The address of x is 0065FDF0

int main()
{
int *ptr;
int x = 12345, y;

Total characters printed on this line is: 41


This line has 28 characters
28 characters were printed

Printing a % in a format control string


ptr = &x;
printf( "The value of ptr is %p\n", ptr );
printf( "The address of x is %p\n\n", &x );

printf( "Total characters printed on this line is:%n",


); printf( " %d\n\n", y );
y = printf( "This line has 28 characters\n" );
printf( "%d characters were printed\n\n", y );
printf( "Printing a %% in a format control string\n" );
return 0;
}

Dale Roberts

Printing with Field Widths and Precisions


Field width (Size of field in which data is printed)
If width larger than data, default right justified
If field width too small, increases to fit data
Minus sign uses one character position in field

Integer width inserted between % and conversion specifier.


%4d : field width of 4

Example:

Precision (Meaning varies depending on data type)


Integers (default 1): Minimum number of digits to print, If data too small,
prefixed with zeros
Floating point: Number of digits to appear after decimal (e and f).
g : maximum number of significant digits

Strings: Maximum number of characters to be written from string


Format: Use a dot (.) then precision number after %
Example:

%.3f

Dale Roberts

Printing with Field Widths and Precisions (cont)

Field width and precision


Can both be specified using format of
%width.precision
Example: %5.3f
Negative field width (-): left justified; Positive field
width: right justified
Precision must be positive
Can use integer expressions to determine field width
and precision values
Place an asterisk (*) in place of the field width or precision
Matched to an int argument in argument list
Example: printf( "%*.*f", 7, 2, 98.736 );
Dale Roberts

Example:
1
2
3
4
5
6
7
8
9
10
11
12
13

Program Output:
/* Fig 9.9: fig09_09.c */
/* Using precision while printing integers,Using precision for integers
0873
floating-point numbers, and strings */
000000873
#include <stdio.h>
int main()
{
int i = 873;/* Initialize variables */
double f = 123.94536;
char s[] = "Happy Birthday";
/* print */

Using precision for floating-point numbers


123.945
1.239e+02
124
Using precision for strings
Happy Birth

printf( "Using precision for integers\n" );


printf( "\t%.4d\n\t%.9d\n\n", i, i );

14

printf( "Using precision for floating-point numbers\n" );

15
16
17
18
19
20 }

printf( "\t%.3f\n\t%.3e\n\t%.3g\n\n", f, f, f );
printf( "Using precision for strings\n" );
printf( "\t%.11s\n", s );
return 0;

Dale Roberts

Using Flags in the printf Format-Control String


Flags
Supplement formatting capabilities
Place flag immediately to the right of percent sign
Several flags may be combined
Flag

Description

- (minus sign)

Left justify the output within the specified field.

+ (plus sign)

Display a plus sign preceding positive values and a minus sign preceding negative
values.

space

0 (zero)

Print a space before a positive value not printed with the + flag
Prefix 0 to the output value when used with the octal conversion specifier
Prefix 0x or 0X to the output value when used with the hexadecimal conversion
specifiers x or X
Force a decimal point for a floating point number printed with e, E, f, g, or G
that does not contain a fractional part. (Normally the decimal point is only printed
if a digit follows it.) For g and G specifiers, trailing zeros are not eliminated.
Pad a field with leading zeros

Dale Roberts

Example:
1 /* Fig 9.11: fig09_11.c */
2 /* Right justifying and left justifying values */
3 #include <stdio.h>
4
5 int main()
6 {
7
printf( "%10s%10d%10c%10f\n\n", "hello", 7, 'a',
1.23
);
8
printf( "%-10s%-10d%-10c%-10f\n", "hello", 7,
'a',
1.23
); 0;
9
return
10 }
Program Output:

hello7a1.230000

hello7a1.230000

Dale Roberts

Example:
1 /* Fig 9.14: fig09_14.c */
2 /* Using the # flag with conversion
specifiers
3
o, x, X and any floating-point
specifier
4 #include*/<stdio.h>
5
6 int main()
7 {
8
int c = 1427;
9
double p = 1427.0;
10
11
printf( "%#o\n", c );
12
printf( "%#x\n", c );
13
printf( "%#X\n", c );
14
printf( "\n%g\n", p );
15
printf( "%#g\n", p );
16
17
return 0;
18 }

Program Output:
02623
0x593
0X593
1427
1427.00

Dale Roberts

Example:
int i=1256;
printf(%d,i);
printf(%5d,i);
printf(%05d,i);
printf(%x,i);
printf(%-5d,i);

4
5
5
3
5

characters
characters
characters
characters
characters

1256
1256
01256
788
1256

Example:
float buf=125.12;
printf(%f,buf);
125.119995 (floating number precision error)
printf(%.0f,buf); 125
printf(%7.2f,buf); 125.12
printf(%07.2f,buf); 0125.12
Example:
char buf[] = hello, world;
printf(%10s,buf); hello, world
printf(%-10s,buf); hello, world
printf(%20s,buf); hello, world
printf(%20.10s,buf);
hello, wor
printf(%-20.10s,buf);
hello, wor
printf(%.10s,buf); hello, wor

Dale Roberts

Printing Literals and Escape Sequences


Printing Literals
Most characters can be printed
Certain "problem" characters, such as the quotation mark "
Must be represented by escape sequences
Represented by a backslash \ followed by an escape character

Table of all escape sequences


Escape sequence

Description

Output the single quote () character.

Output the double quote () character.

\?

Output the question mark (?) character.

\\

Output the backslash (\) character.

\a

Cause an audible (bell) or visual alert

\b

Move the cursor back one position on the current line.

\f

Move the cursor to the start of the next logical page.

\n

Move the cursor to the beginning of the next line.

\r

Move the cursor to the beginning of the current line.

\t

Move the cursor to the next horizontal tab position

\v

Move the cursor to the next vertical tab position.

Dale Roberts

You might also like