Standard Library Functions in C

adplus-dvertising
fscanf() Function
Previous Home Next

Description

The C library function,fscanf() function used for reads a data from file.

Declaration

Following is the declaration for fprintf() function.

int fscanf(FILE *stream, const char *format, ...);

Parameters

Stream - This is the pointer to a FILE object the input stream to read data from.

Format - This is the C string that contains one or more of the following items - Whitespace character, Non-whitespace character and Format specifiers.

A format specifier for fscanf follows this prototype:

[=%[*][width][modifiers]type=]

The format specifier can also contain sub-specifiers: asterisk (*), width and length (in that order), which are optional and follow these specifications:

argument description
*This is an optional starting asterisk indicates that the data is to be read from the stream but ignored, i.e. it is not stored in the corresponding argument.
widthThis specifies the maximum number of characters to be read in the current reading operation.
modifiersSpecifies a size different from int (in the case of d, i and n), unsigned int (in the case of o, u and x) or float (in the case of e, f and g) for the data pointed by the corresponding additional argument: h : short int (for d, i and n), or unsigned short int (for o, u and x) l : long int (for d, i and n), or unsigned long int (for o, u and x), or double (for e, f and g) L : long double (for e, f and g).
typeA character specifying the type of data to be read and how it is expected to be read. See next table.

Where the specifier character at the end is the most significant component, since it defines which characters are extracted, their interpretation and the type of its corresponding argument:

type Qualifying Input Type of argument
cSingle character: Reads the next character. If a width different from 1 is specified, the function reads width characters and stores them in the successive locations of the array passed as argument. No null character is appended at the end.char *
dDecimal integer: Number optionally preceded with a + or - signint *
e, E, f, g, GFloating point: Decimal number containing a decimal point, optionally preceded by a + or - sign and optionally followed by the e or E character and a decimal number. Two examples of valid entries are -732.103 and 7.12e4float *
oOctal Integer int *
sString of characters. This will read subsequent characters until a whitespace is found (whitespace characters are considered to be blank, newline and tab).char *
uUnsigned decimal integer.unsigned int *
x, XHexadecimal Integerint *

additional arguments - Depending on the format string, the function may expect a sequence of additional arguments, each containing a pointer to allocated storage where the interpretation of the extracted characters is stored with the appropriate type. fscanf Function Reads data from the stream and stores them according to the parameter format into the locations pointed by the additional arguments. The additional arguments should point to already allocated objects of the type specified by their corresponding format tag within the format string.

Return Value

The fscanf function returns the number of characters that was read and stored. If an error occurs or end-of-file is reached before any items could be read, it will return EOF.

Example

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char s1[10], s2[10], s3[10];
   int year;
   FILE * fp;

   fp = fopen ("myfile.txt", "w+");
   fputs("ram suresh sanju 2015", fp);
   
   rewind(fp);
   fscanf(fp, "%s %s %s %d", s1, s2, s3, &year);
   
   printf("Read String1 %s\n", str1 );
   printf("Read String2 %s\n", str2 );
   printf("Read String3 %s\n", str3 );
   printf("Read Integer %d\n", year );

   fclose(fp);
   
   return(0);
}

Output

Read String1 ram
Read String2 suresh
Read String3 sanju
Read Integer 2015
Previous Home Next