Node:fscanf, Previous:Deprecated formatted string input functions, Up:String output and input
fscanf
The fscanf
function is just like the scanf
function,
except that the first argument of fscanf
specifies a stream from
which to read, whereas scanf
can only read from standard input.
Here is a code example that generates a text file containing five
numbers with fprintf
, then reads them back in with fscanf
.
Note the use of the #
flags in the %#d
conversions in the
fprintf
call; this is a good way to generate data in a format
that scanf
and related functions can easily read with the
%i
input conversion.
#include <stdio.h> #include <errno.h> int main() { float f1, f2; int i1, i2; FILE *my_stream; char my_filename[] = "snazzyjazz.txt"; my_stream = fopen (my_filename, "w"); fprintf (my_stream, "%f %f %#d %#d", 23.5, -12e6, 100, 5); /* Close stream; skip error-checking for brevity of example */ fclose (my_stream); my_stream = fopen (my_filename, "r"); fscanf (my_stream, "%f %f %i %i", &f1, &f2, &i1, &i2); /* Close stream; skip error-checking for brevity of example */ fclose (my_stream); printf ("Float 1 = %f\n", f1); printf ("Float 2 = %f\n", f2); printf ("Integer 1 = %d\n", i1); printf ("Integer 2 = %d\n", i2); return 0; }
This code example prints the following output on the screen:
Float 1 = 23.500000 Float 2 = -12000000.000000 Integer 1 = 100 Integer 2 = 5
If you examine the text file snazzyjazz.txt
, you will see it
contains the following text:
23.500000 -12000000.000000 100 5