Reading Mixed Datatypes in C language
Posted by
Ravi Kumar at Saturday, September 10, 2011
Share this post:
|
It is possible to use one scanf statement to input
a data line containing mixed mode data.In such cases,core
should be exercised to ensure that the input data items
match the control specifications in order and type.
The statement
scanf("%d%c%f%s",&count,&code,&ratio,&name);
will read the data
14 s 14.345 john
Detection of errors in input: When a scanf function
completes reading its list,it returns the value of items
that are successfully read. This value can be used to test
whether any errors occurred in reading the input
Example: scanf("%d%f%s",&a,&b,&name);
will return the value 3 if the following data is
typed in:
20 150.35 cycle
will return the value 1 if the following line is
typed in:
20 cycle 150.35
This is because the function would encounter a string
when it was expecting a floating point value and would
therefore terminates its scan after reading the first value.
Some versions of scanf support the following conversion
specifications for strings.
%[characters] and %[^characters]
The specification %[character] means that only the
characters specified within brackets are permissible in the
input string.If the input string contains only other
character,the string will be terminated at the first encounter
of such a character. The specification of%[^characters] does
exactly the reverse. The character specified after the
circumflex(^) are not permitted in the input string.The reading
of the string will be terminated at the encounter of one of
these character %s specifier cannot be used to read string with
blank spaces. But,this can be done with the help of %[] specification.
Blank spaces may be included within the brackets,this
enabling the scanf to strings with spaces