C programming language has standard libraries that allows us to take the input from a file or a keyboard and give the output to the screen or a file.
- Standard input (stdin) is used for taking input.
- Standard output (stdout) is used for giving output.
- Standard error (stderr) is used for giving error.
The functions used for standard input and output are present in the stdio.h header file. To use those functions, we need to include the stdio.h header file in our program, as shown below.
#include <stdio.h>
Functions used for input and output
printf()
function – Show Outputscanf()
function – Take Inputgetchar()
andputchar()
function – To take and show one charactergets()
andputs()
function – To take and show a string
Printf() function
Printf function shows the value which is passed as a parameter to standard output (console). It prints the output according to the format specifier. It returns the total number of characters written to the console.
Syntax :
printf(“%X”, variableOfXType); where %X is the format specifier like for integer type – %d, float type- %f etc.
Example :
printf("%d", intVariable)
printf("%c", charVariable)
Scanf() function
Scanf function t reads data from standard input device (keyboard) and stores it according to the parameter format into the locations pointed by the additional arguments. It reads the input according to the format specifier. It returns the number of items of the argument list successfully read.
Syntax :
scanf(“%X”, &variableOfXType); where %X is the format specifier like for integer type – %d, float type- %f etc.
Example :
printf("%d", &intVariable)
printf("%c", &charVariable)
How to take input and output of basic types in C programming?
The basic type in C includes types like int, float, char, etc. Inorder to input or output the specific type, the X in the above syntax is changed with the specific format specifier of that type. The Syntax for input and output for these are:
- Integer:
Input: scanf("%d", &intVariable);
Output: printf("%d", intVariable);
- Float:
Input: scanf("%f", &floatVariable);
Output: printf("%f", floatVariable);
- Character:
Input: scanf("%c", &charVariable);
Output: printf("%c", charVariable);
Format Specifiers in C
The format specifier in C is used to tell the compiler about the type of data to be printed or scanned in input and output operations. They always start with a % symbol and are used in the formatted string in functions like printf(), scanf, sprintf(), etc.
The below table contains the most commonly used format specifiers in C:
Format Specifier | Description |
---|---|
%c | For character type. |
%d | For signed integer type. |
%e or %E | For scientific notation of floats. |
%f | For float type. |
%g or %G | For float type with the current precision. |
%i | Unsigned integer |
%ld or %li | Long |
%lf | Double |
%Lf | Long double |
%lu | Unsigned int or unsigned long |
%lli or %lld | Long long |
%llu | Unsigned long long |
%o | Octal representation |
%p | Pointer |
%s | String |
%u | Unsigned int |
%x or %X | Hexadecimal representation |
%n | Prints nothing |
%% | Prints % character |
Code for printf and scanf:
// C program to show input and output
#include <stdio.h>
int main()
{
// Declare the variables
int num;
char ch;
float f;
// --- Integer ---
// Input the integer
printf("Enter the integer: ");
scanf("%d", &num);
// Output the integer
printf("\nEntered integer is: %d", num);
// --- Float ---
//For input Clearing buffer
while((getchar()) != '\n');
// Input the float
printf("\n\nEnter the float: ");
scanf("%f", &f);
// Output the float
printf("\nEntered float is: %f", f);
// --- Character ---
// Input the Character
printf("\n\nEnter the Character: ");
scanf("%c", &ch);
// Output the Character
printf("\nEntered character is: %c", ch);
return 0;
}
Output:
Enter the integer: 10 Entered integer is: 10 Enter the float: 2.5 Entered float is: 2.500000 Enter the Character: A Entered Character is: A
Take Multiple Inputs from the User
#include <stdio.h>
int main() {
// using scanf() for multiple inputs
char gender;
int age;
printf("Enter your age and then gender(M, F or O): ");
scanf("%d %c", &age, &gender);
printf("You entered: %d and %c", age, gender);
return 0;
}
Output :
Enter your age and then gender(M, F or O): 32 M
You entered: 32 and M
Print multiple outputs
We can use a single printf()
function to display values of multiple variables.
#include <stdio.h>
int main() {
// using printf() for multiple outputs
int day = 20;
int month = 11;
int year = 2021;
printf("The date is: %d-%d-%d", day, month, year);
return 0;
}
Output :
The date is: 20-11-2021
getchar()
& putchar()
functions
The getchar
and putchar
functions are used for taking character input from the user and printing the character as output.
getchar() function
The getchar()
function reads a character from the terminal and returns it as an integer. This function reads only a single character at a time.
Syntax :
int getchar(void);
putchar() function
The putchar()
function displays the character passed to it on the screen and returns the same character. This function too displays only a single character at a time.
Syntax:
int putchar(int character);
Example:
#include <stdio.h>
void main( )
{
int c;
printf("Enter a character");
/*
Take a character as input and
store it in variable c
*/
c = getchar();
/*
display the character stored
in variable c
*/
putchar(c);
}
Output :
Enter a character: Raushan
R
gets()
& puts()
functions
The gets
and puts
functions are used for taking string input and giving string output.
gets() function
The gets()
function reads a line of text from stdin(standard input) into the buffer pointed to by str
pointer, until either a terminating newline or EOF (end of file) occurs.
Syntax:
char* gets(char* str);
puts() function
The puts()
function writes the string str
with a newline character (‘\n’) at the end to stdout. On success, a non-negative value is returned.
Syntax:
int puts(const char* str);
Example:
#include <stdio.h>
void main()
{
/* character array of length 100 */
char str[100];
printf("Enter a string: ");
gets(str);
puts(str);
getch();
return 0;
}
Output :
Enter a string: Raushan
Raushan
- When you will compile the above code, it will ask you to enter a string.
- When you will enter the string, it will display the value you have entered.
Difference between scanf()
and gets()
The main difference between these two functions is that scanf()
stops reading characters when it encounters a space, but gets()
reads space as a character too.
If you enter a name as Raushan Kumar using scanf()
it will only read and store Raushan and will leave the part of the string after space. But gets()
function will read it completely.
Here the scanf()
function:
#include <stdio.h>
int main() {
// using scanf()
char n1[50], n2[50];
printf("Please enter n1: ");
gets(n1);
printf("You entered: %s", n1);
return 0;
}
Output :
Please enter n1: raushan kumar
You entered: raushan
Here the gets()
function:
#include <stdio.h>
int main() {
// using scanf()
char n1[50], n2[50];
printf("Please enter n1: ");
gets(n1);
printf("You entered: %s", n1);
return 0;
}
Output :
Please enter n1: raushan kumar
You entered: raushan kumar