Introduction to Computing Lecture 03: Basic input / output operations Assist.Prof.Dr. Nükhet ÖZBEK Ege University Department of Electrical & Electronics Engineering nukhet.ozbek@ege.edu.tr
Topics Streams printf function scanf function
Data storage Data can be stored in two different ways: by assignment to a variable copying data from an input device into a variable using a function like scanf
Input operation Sometimes, it is need to copy data into a variable for a program to manipulate different data each time it executes This data transfer from the outside world into memory is called an input operation
Output operation As the program executes, it performs computations and stores the results in memory These program results can be displayed to the user by an output operation
Input/Output Program
Input/output functions All input/output operations in C are performed by special program units called input/output functions You can gain access to most of the operations through the preprocessor directive #include <stdio.h>
Input/output functions In C, a function call is used to call or activate a function Calling a function is analogous to asking a friend to perform an urgent task
Streams Text input or output is dealt with as a sequence of characters A stream serves as a channel to convey characters between I/O and programs
Streams: Input -- Example int item; float cost; scanf( %d %f, &item, &cost); 135 25.5 _ 1 3 5 2 5. 5 \n input buffer
Streams: Input -- Example (cont) int item; float cost; scanf( %d %f, &item, &cost); 135 25.5 _ 1 3 5 2 5. 5 \n item cost
Streams: Input Example (cont) int item; float cost; scanf( %d %f, &item, &cost); 135 25.5 _ 2 5. 5 \n item 135 cost
Streams: Input Example (cont) int item; float cost; scanf( %d %f, &item, &cost); 135 25.5 _ \n item 135 cost 25.5
Streams: Output -- Example printf( Hello!\n ); H e l l o! \n output buffer
Streams: Output Example (cont) printf( Hello!\n ); H e l l o! \n
Streams: Output Example (cont) printf( Hello!\n ); e l l o! \n H
Streams: Output Example (cont) printf( Hello!\n ); l l o! \n He
Streams: Output Example (cont) printf( Hello!\n ); l o! \n Hel
Streams: Output Example (cont) printf( Hello!\n ); o! \n Hell
Streams: Output Example (cont) printf( Hello!\n );! \n Hello
Streams: Output Example (cont) printf( Hello!\n ); \n Hello!
Streams: Output Example (cont) printf( Hello!\n ); Hello! _
Streams From the program's point of view, the characters are queued in a pipe The sequence of characters is organized into lines Each line: can have zero or more characters ends with the "newline" character '\n'
"Standard" Streams Standard streams: stdin - standard input usually from keyboard stdout - standard output usually to screen stderr - standard error usually to screen must have at the top of your program #include <stdio.h> can be redirected
stdin: Input Data is read in from stdin (into a variable) using the scanf() function
Example: ReadData Input name, age, gender, idnumber
#include <stdio.h>
#include <stdio.h> /*************************************\ Read in important info about a lecturer \**************************************/
#include <stdio.h> /*************************************\ Read in important info about a lecturer \**************************************/ int main() { } return 0;
#include <stdio.h> /*************************************\ Read in important info about a lecturer \**************************************/ int main() { char name[100]; float age; char gender; int idnumber; return 0; }
#include <stdio.h> /*************************************\ Read in important info about a lecturer \**************************************/ int main() { char name[100]; float age; char gender; int idnumber; } scanf("%s %f %c %d", name, &age, &gender, &idnumber); return 0;
#include <stdio.h> /*************************************\ Read in important info about a lecturer \**************************************/ int main() { char name[100]; float age; char gender; int idnumber; } scanf("%s %f %c %d", name, &age, &gender, &idnumber); return 0;
#include <stdio.h> /*************************************\ Read in important info about a lecturer \**************************************/ int main() { char name[100]; Ali float age; 19.5 char gender; int idnumber; M 2085 scanf("%s %f %c %d", name, &age, &gender, &idnumber); return 0; } Input: Ali 19.5 M 2085
stdout:output Data (e.g., from a variable) is written out to stdout using the printf() function.
Example: Write Data Set name to Ali Set age to 19.5 Set gender to M Set idnumber to 2085 Output name, age, gender, idnumber
#include <stdio.h> /*****************************************\ Write out important info about a lecturer \*****************************************/ int main() { char *name = Ali" ; float age = 19.5; char gender = M'; int idnumber = 2085 ; Ali 19.5 M 2085 _ } printf("%s\n%f\n%c\n%d\n", name, age, gender, idnumber); return 0;
Formatted Input and Output General form: printf(format-control-string, other-arguments); scanf(format-control-string, other-arguments ); Examples: printf("%s %f %c %d", name, age, gender, idnumber); scanf("%s %f %c %d", name, &age, &gender, &idnumber);
printf -- Format-Control-String Describes the format of the data for output Contains conversion specifiers or place holders and literal characters Example: printf( %s is %d years old.\n, name, age);
printf -- Format-Control-String (cont) Describes the format of the data for output Contains conversion specifiers or place holders and literal characters Example: printf( %s is %d years old.\n, name, age); conversion specifiers or placeholders
printf -- Format-Control-String (cont) Describes the format of the data for output Contains conversion specifiers and literal characters Example: printf( %s is %d years old.\n, name, age); literal characters
printf -- Other-Arguments For printf: variables containing data for output Example: printf( %s is %d years old.\n, name, age); In case of multiple placeholders, number of place holders must match number of variables C matches variables with placeholders in leftto-right order
scanf -- Format-Control-String Describes the format of the data given as input Contains conversion specifiers or place holders Example: scanf("%s %f %c %d", name, &age, &gender,&id); conversion specifiers
scanf -- Other-Arguments For scanf: pointers to variables in which the input will be stored Example: scanf("%s %f %c %d", name, &age, &gender,&id);
scanf -- Other-Arguments (cont) For scanf: pointers to variables in which the input will be stored Example: scanf("%s %f %c %d", name, &age, &gender,&id); Variables of type int, float or char need & Do NOT use & with strings! & is for scanf only!
Common Conversion Specifiers for Numerical Information decimal integer: %d printf( What is %d plus %d?\n, x, y); scanf( %d, &sum); float: %f printf( %f squared is...?, x); scanf( %f, &ans); double: printf( %f squared is...?, x); scanf( %lf, &ans);
Conversion Specifiers for Alphanumeric Information char: %c printf( What letter follows %c?\n,ch); scanf( %c, &nextchar); string: %s printf( Name: %s\n, name); scanf( %s, name);
printf: Conversion Specifiers i or d: display a signed decimal integer f: display a floating point value (default precision is 6) e or E: display a floating point value in exponential notation g or G: display a floating point value in either f form or e form; whichever is more compact for the given value and precision L: placed before any float conversion specifier to indicate that a long double is displayed
scanf: Conversion Specifiers d: read an optionally signed decimal integer i: read an optionally signed decimal, octal, or hexadecimal integer i and d: the argument is a pointer to an integer int idnumber; scanf("%d", &idnumber);
scanf: Conversion Specifiers (cont) h or l: placed before any integer conversion specifiers to indicate that a short or long integer is to be input long int idnumber; scanf("%ld", &idnumber); l or L: placed before any float conversion specifiers to indicate that a double or long double is to be input
Skipping Characters in Input Stream Skipping blank spaces scanf("%d %d %d", &day, &month, &year); An alternative Enter data as dd-mm-yyyy: 16-3-1999 Store each number in date variables scanf("%d-%d-%d", &day, &month, &year);
Displaying Prompts When input data are needed in an interactive program, it is better to use the printf function to display a prompting message or prompt, that tells the user what data to enter and if necessary, the format of the input
Displaying Prompts - Examples printf( Enter the distance in miles> ); scanf( %lf, &miles); printf( Enter date as dd-mm-yyyy ); scanf("%d-%d-%d", &day, &month, &year);
Formatting output Using justification for decimal numbers int a=15, b=116; printf( %d\n,a); printf( %d,b); Output: 15 116
Formatting output Using justification for decimal numbers int a=15, b=116; printf( %3d\n,a); printf( %3d,b); Output: 15 116
Formatting output Floating point numbers double fp = 251.7366; printf( "%f %.3f %.2f %e %E\n", fp, fp, fp, fp,fp ); Output: 251.736600 251.737 251.74 2.517366e+002 2.517366E+002
Formatting output with \n \n is an escape sequence in C The cursor is a moving place market that indicates the next position on the screen where information will be displayed When executing a printf function, the cursor is advanced to the start of the next line on the screen if \n is encountered in the format string
\n Examples printf( Here is the first line\n ); printf( \nand this is the second.\n ); Here is the first line and this is the second.
\n Examples printf( This sentence appears \non two lines. ); This sentence appears on two lines.
Formatting output with \t \t is another escape sequence in C for horizontal tab Example: printf( age id\n ); printf( --- ------\n ); printf( %d %d\n,age1,id1); printf( %d %d\n,age2,id2); Output: age id --- ------ 12 1222 3 1423
Formatting output with \t Example with (\t and justification): printf( age\tid\n ); printf( ---\t------\n ); printf( %3d\t%4d\n,age1,id1); printf( %3d\t%4d\n,age2,id2); Output: age id --- ------ 12 1222 3 1423
Some Other Escape sequences \a: Alert (bell) \b: Backspace \ : Single quotation mark \ : Double quotation mark \\: Backslash
Summary Input from keyboard is via the stdin stream using the scanf() function Output to the screen is via the stdout stream using the printf() function Streams carry characters divided into lines with \n character To use the C library functions, you must include the stdio.h header file Input and output can be formatted