Development Environment |
Reading Formatted ASCII Data
The fscanf
function is like the fscanf
function in standard C. Both functions operate in a similar manner, reading data from a file and assigning it to one or more variables. Both functions use the same set of conversion specifiers to control the interpretation of the input data.
The conversion specifiers for fscanf
begin with a %
character; common conversion specifiers include
Conversion Specifier |
Description |
%s |
Match a string |
%d |
Match an integer in base 10 format |
%g |
Match a double-precision floating-point value |
You can also specify that fscanf
skip a value by specifying an asterisk in a conversion specifier. For example, %*f
means skip the floating-point value in the input data; %*d
means skip the integer value in the input data.
Differences Between the MATLAB fscanf and the C fscanf
Despite all the similarities between the MATLAB and C versions of fscanf
, there are some significant differences. For example, consider a file named moon.dat
for which the contents are as follows.
The following code reads all three elements of this file into a matrix named MyData
.
Notice that this code does not use any loops. Instead, the fscanf
function continues to read in text as long as the input format is compatible with the format specifier.
An optional size argument controls the number of matrix elements read. For example, if fid
refers to an open file containing strings of integers, then this line reads 100 integer values into the column vector A
.
This line reads 100 integer values into the 10-by-10 matrix A
.
A related function, sscanf
, takes its input from a string instead of a file. For example, this line returns a column vector containing 2
and its square root.
Reading Strings Line by Line from Text Files | Writing Formatted Text Files |