In C, scanf() is a standard input function used to read formatted data from the standard input stream (stdin), which is usually the keyboard.
- It scans the input according to the specified format specifiers (like %d, %f, %s, etc.) and stores the values into the provided variable addresses.
- The scanf() function is defined in the <stdio.h> header file.
C
#include <stdio.h>
int main() {
int n;
// Reading an integer input
scanf("%d", &n);
printf("%d", n);
return 0;
}
Output
10 (Enter by user)
10
Explanation: `scanf("%d", &n)` reads an integer from the keyboard and stores it in variable `n`. Here, `%d` specifies an integer input, and `&n` gives the memory address where the value is stored.
Syntax
The syntax of scanf() in C is similar to the syntax of printf().
C
scanf("format", address_of_args... );
Parameters:
- format: It is the format string that contains the format specifiers(s).
- address_of_args: Address of the variables where we want to store the input.
Return Value:
- >0: The number of values converted and assigned successfully.
- 0: No value was assigned.
- <0: Read error encountered or end-of-file (EOF) reached before any assignment was made.
We use & operator to find the address of the variables by appending it before the variable name and format specifier to recognize which type of data to be store.
Examples format specifiers recognized by scanf:
%d to accept input of integers.
%ld to accept input of long integers
%lld to accept input of long long integers
%f to accept input of real number.
%c to accept input of character types.
%s to accept input of a string.
If you're interested in learning more about input handling and integrating it into complex data structures, the C Programming Course Online with Data Structures covers practical applications of input functions in C.
Examples of scanf
The below examples demonstrate the use of scanf for different types of input:
Reading Floating Point Value
C
#include <stdio.h>
int main() {
float f;
// Reading floating number
// and store in the float
// variable f
scanf("%f", &f);
printf("You entered: %f", f);
return 0;
}
Output
3.21 (Enter by user)
3.210000
`scanf("%f", &f)` reads a floating-point number from the user and stores it in variable `f`. Here, `%f` specifies a float input, and `&f` provides the memory address to store the value.
C
#include <stdio.h>
int main() {
int a, b;
// Reading two integers and storing
// them in a and b
scanf("%d %d", &a, &b);
printf("%d %d", a, b);
return 0;
}
Output
3 7 (Enter by user)
3 7
Reading Text (Strings)
C
#include <stdio.h>
int main() {
char name[50];
// Reading a string
scanf("%s", name);
printf("%s", name);
return 0;
}
Console
Geeks For Geeks (Enter by user)
Geeks
In the above example, we read a single input until the first space, so when "Geeks For Geeks" is entered, only "Geeks" will be stored in name. Also, we don't need to use the &operator for the address of name.
Scanset Characters
In C, scanf() provides a feature called scanset characters using %[] that lets you read a sequence of characters until a certain condition.
C
- This statement reads input from the user including spaces and stores it in the name variable. The format specifier %[^\n] is a scanset that tells scanf to read all characters except the newline (\n), stopping when the user presses Enter. It is useful for reading full lines of text.
C
#include <stdio.h>
int main()
{
char name[50];
// Reading a string with
// whitespaces
scanf("%[^\n]", name);
printf("%s", name);
return 0;
}
Output
Hello Geek (Enter by user)
Hello Geek
The code scanf("%[^\n]", name); reads a full line of text including spaces from the user and stores it in the array name. The printf("%s", name); then prints the entered text exactly as it was typed.
Explore
C Basics
Arrays & Strings
Pointers and Structures
Memory Management
File & Error Handling
Advanced Concepts