scanf in C (original) (raw)
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.
Take Two Integers as Input
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 `
scanf("%[^\n]", name);
`
- 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.