Managing Input and Output operations in c
– IO is not part of C syntax
– Several functions becomes standard for IO are called Standard IO Library in C
– The printf and scanf are library functions
– The stdio.h file and its inclusion in the program using include directive
– Other headers such as math.h etc
– Several functions becomes standard for IO are called Standard IO Library in C
– The printf and scanf are library functions
– The stdio.h file and its inclusion in the program using include directive
– Other headers such as math.h etc
Reading and Writing Single Char
- The ch = getchar() function and problems associated with input stream
- The isalpha(), isdigit(), isalnum(), islower(), isupper(), isprint(), isspace(), ispunct(), etc. functions and ctype.h file
- The putchar(<char>) function
- putchar(‘\n’) jumps to next line
Formatted Input
- Scanf(<control string>,arg1,arg2,agr3…)
- Control string specifies the field format in which the data is to be entered
- arg1, arg2 etc specifies the locations or addresses where the data is to be stored
- Control string contains field specifications which directs the interpretation of input
- Control String may include
- Field or format specs consisting of conversion char (%), a data type specifier, and optional width field
- Blanks, tabs and newlines
- %wd for integers, %f for float, %lf for double,
- * as width for skipping a field
- %ws or %wc for char strings
- Scanf returns no of items read
Code | Meaning | Code | Meaning |
%c | Single Char | %i | Decimal, hex or octal int |
%d | Decimal Integer | %o | Octal integer |
%e | Floating point | %s | String |
%f | Floating point | %u | Unsigned int |
%g | Floating point | %x | Hexadecimal int |
%h | Short int | %[/^..] | String of words |
Points for Scanf
- All args except CS, must be pointer to vars
- Format specs should match the args in order
- Input data items to be separated by spaces and match the variables receiving in order
- Invalid mismatch will terminate scanf
- Scanf ignores line boundaries
- Unread data items are part of next read
- W should be large enough
Formatted Output
- printf(“control” string, arg1,arg2…)
- Control string may contain following
- Chars to be printed on the screen as it is
- Format specs for each item to be displayed
- Escape sequences chars such as \n, \t etc
- The args should match the specs in number order and type
- Form of format spec is %w.p type-specs
Format Spec for Integers
Format | Output |
printf(“%d”,9876); | 9876 |
printf(“%6d”,9876); | _ _9876 |
printf(“%2d”,9876); | 9876 |
printf(“%-6d”,9876); | 9876_ _ |
printf(“%06d”,9876); | 009876 |
Real Number Output
- %w.p f or %w.p e is the format spec
- w is minimum number of position used to display the value
- p is number of digits displayed after decimal point
- If E is used Output will contain E
- If g or G, it picks up shorter f or e(E)
- The value, when printed, is rounded to p decimal places and printed right justified in w columns
- Leading blanks and trailing zeroes will appear as necessary
- The default precision is 6 decimal places
- w >= p +7 for e or E
- printf (“%.*f”, width, precision, number)
Format Specs for Real Numbers
Format | Output |
printf(“%7.4f”,y) | 98.7654 |
printf(“%7.2f”,y) | _ _ 98.77 |
printf(“%-7.2f”,y) | 98.77_ _ |
printf(“%f”,y) | 98.7654 |
printf(“10.2e”,y) | _ __ 9.88e+01 |
printf(“%11.4e”,-y) | -9.8765e+01 |
printf(“%-10.2e”,y) | 9.88e+01_ _ |
printf(“%e”,y) | 9.876540e+01 |
Printing Characters
- %w.ps for strings where w is the field width of display and p is no of chars to be printed
- It is printed right justified !
- %wc can print right justified in width of w columns
- Default value of w is 1, if precedes with – sign, it prints the data right justified
Printing of Chars and Strings
Specification | Output |
%s | New Delhi 110001 |
%20s | _ _ _ _ New Delhi 110001 |
%20.10s | _ _ _ _ _ _ _ _ _ _ _ _ New Delhi |
%.5s | New D |
%-20.10s | New Delhi _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
%5s | New Delhi 110001 |
Output Format Flags
Flag | Meaning |
– | Output left justified within the field. |
+ | Signed numeric item will be preceded by +/- |
0 | Causes leading zeros to appear |
#(with o or x) | Octal and hex items to be preceded with 0 or 0x |
# (with e f or g) | Causes a decimal point to be present in all floating point numbers. In g prevents truncation of trailing zeros |