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

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

  • 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