scanf
Introduction
The scanf function is used to read information from a standard input device (keyboard). scanf starts with a string argument and may contain additional arguments. Any additional arguments must be pointers (to implement calls by reference).
Program
#include
main()
{
int i = 0;
int k,j=10;
i=scanf("%d%d%d",&j,&k,&i);
printf("total values inputted %d
",i);
printf("The input values %d %d
",j,k);
}
Explanation
- Statement A indicates scanf; it is used for inputting values for i, j, k.
- You have to use the address of the variable as an additional variable, for example, &i.
- The first argument is always a string argument with placeholders.
- During execution of scanf, the input is processed and it is matched against the string argument. The process is continued until the matching is complete.
- When the first placeholder is encountered in the string argument, a value of the specific type of the first element constitutes a match. It is repeated for each placeholder.
- If there are one or more whitespace characters in the first string argument between the placeholders, any sequence of one or more whitespace characters in the input completes a match.
- If there are other characters in a string argument, the input should have the same character in the same sequence in order to constitute a match.
- Once a match is not found, the function is terminated. Matching fails if the expected input is missing.
- scanf returns the number of values that have been succesfully input. In this example, if you type A instead of an integer when you are giving the value for k, then scanf returns only 1, although k gets the value 65 (the ASCII value for A).
Points to Remember
- Input can be done using scanf.
- For scanf, the address of the variable should be passed.
- scanf returns the number of successful inputs.
THE scanf PLACEHOLDERS
Introduction
The scanf placeholder consists of % at the beginning and a type indicator at the end. Apart from that it can have *, a maximum field-width indicator, and a type indicator modifier, for example,
%10.2f,%10d
Program/Example
Type indicators
- d, i Used for signed integers; the expected argument should be a pointer to int.
- o Used for unsigned int expected's value. It should be an integer in octal form.
- U Unsigned integer in decimal form.
- X, X Unsigned integer in hexadecimal form.
- E, E, f, g, G Floating-point values.
- S Character string. It matches a sequence of non-whitespace characters terminated by an end-of-line or end-of-file character. The additional argument should be a pointer to char and should point to an area that is large enough to hold the input string as well as the NULL terminator.
- C Matches the number of characters according to a specified field-width. If no width is specified then a single character is assumed. The additional argument must be a pointer to char; the area pointed to should be large enough to hold the specified number of characters.
- N Does not read any input but writes the number of characters so far in the target variable.
Use of *
The * is used to suppress input. For example, with %*d, if your input consists of 5 values and you want to ignore the middle 3 values, you can write:
scanf(" %d %*d %*d%*d %d ", &i, &j)
So, if your input is
10 20 30 40 50
it will get the value 10 and j will get the value 50. This is useful when you are getting the input from a file.
Field-width
It indicates the maximum number of characters that are read into the variables.
Explanation
- scanf requires two inputs: the first is a string argument and the second is a set of additional arguments.
- You can define how the input is to be taken by using placeholders.