The answer is available in the included text from the standard that is
still visible above: they are physical devices. If they were files,
you could destroy the output you have generated on your monitor with
a remove() function call and reread the user input as many times as you
wanted by closing and reopening the keyboard.
Why do you think the standard *explicitly* talks about two categories of
sources/destinations for I/O operations: physical devices and files
supported on *structured storage devices*?
Whether a device is considered a file is a question about the meaning
of the word "file". The standard doesn't provide an explicit
definition, but it does have wording that clearly implies that a
device can be a file.
In the following, I'll use underscores to denote italics.
C99 7.19.2 p1 says:
Input and output, whether to or from physical devices such as
terminals and tape drives, or whether to or from files supported
on structured storage devices, are mapped into logical data
_streams_, whose properties are more uniform than their various
inputs and outputs.
This makes a clear distinction between physical devices and files on
structured storage devices, but it doesn't quite state that physical
devices are not files. The ambiguity is in the interpretation of the
phrase "files supported on structured storage devices"; does it imply
that *all* files are "supported on structured storage devices", or is
it merely talking about the subset of files that are "supported on
structured storage devices"? Since it doesn't refer to physical
devices as files, it's difficult to tell from this passage alone.
But C99 7.19.3 p1 says:
A stream is associated with an external file (which may be a
physical device) by _opening_ a file, which may involve _creating_
a new file.
That seems pretty clear to me.
Presumably a remove() operation on an external file that is a physical
device would fail (though it could conceivably unplug the device from
the system if the implementer is sufficiently perverse). Similarly,
there's no reason to expect that closing and re-opening a physical
device will let you re-read the same input. You can't even assume
that for a disk file, since some external entity (such as another
process) might have modified the file in the meantime.