|
Compaq C
Compaq C Run-Time Library Reference Manual for
OpenVMS Systems
exp
Returns the base e raised to the power of the argument.
Format
#include <math.h>
double exp (double x);
float expf (float x); (ALPHA ONLY)
long double expl (long double x); (ALPHA ONLY)
double expm1 (double x); (ALPHA ONLY)
float expm1f (float x); (ALPHA ONLY)
long double expm1l (long double x); (ALPHA ONLY)
Argument
x
A real value.
Description
The
exp
functions compute the value of the exponential function, defined as
e**x, where e is the constant used as a base for natural
logarithms.
The
expm1
functions compute exp(x) - 1 accurately, even for tiny
x.
If an overflow occurs, the
exp
functions return the largest possible floating-point value and set
errno
to ERANGE. The constant HUGE_VAL is defined in the
<math.h>
header file to be the largest possible floating-point value.
Return Values
x
|
The exponential value of the argument.
|
HUGE_VAL
|
Overflow occurred;
errno
is set to ERANGE.
|
0
|
Underflow occurred;
errno
is set to ERANGE.
|
NaN
|
x is NaN;
errno
is set to EDOM.
|
fabs
Returns the absolute value of its argument.
Format
#include <math.h>
double fabs (double x);
float fabsf (float x); (ALPHA ONLY)
long double fabsl (long double x); (ALPHA ONLY)
Argument
x
A real value.
Return Value
x
|
The absolute value of the argument.
|
fchown
Changes the owner and group of a file.
Format
#include <unistd.h>
int fchown (int fildes, uid_t owner, gid_t
group);
Arguments
fildes
An open file descriptor.
owner
A user ID corresponding to the new owner of the file.
group
A group ID corresponding to the group of the file.
Description
The
fchown
function has the same effect as
chown
except that the file whose owner and group are to be changed is
specified by the file descriptor fildes.
Return Values
0
|
Indicates success.
|
--1
|
Indicates failure. The function sets
errno to one of the following values:
The
fchown
function
will fail if:
- EBADF -- The
fildes argument is not an open file descriptor.
- EPERM -- The effective user ID does not match the owner of the
file, or the process does not have appropriate privilege.
- EROFS -- The file referred to by
fildes resides on a read-only file system.
The
fchown
function
may fail if:
- EINVAL -- The owner or group ID is not a value supported by the
implementation.
- EIO -- A physical I/O error has occurred.
- EINTR -- The
fchown
function was interrupted by a signal that was caught.
|
fclose
Closes a file by flushing any buffers associated with the file control
block and freeing the file control block and buffers previously
associated with the file pointer.
Format
#include <stdio.h>
int fclose (FILE *file_ptr);
Argument
file_ptr
A pointer to the file to be closed.
Description
When a program terminates normally, the
fclose
function is automatically called for all open files.
The
fclose
function tries to write buffered data by using an implicit call to
fflush
.
If the write fails (because the disk is full or the user's quota is
exceeded, for example),
fclose
continues executing. It closes the VMS channel, deallocates any
buffers, and releases the memory associated with the file descriptor
(or FILE pointer). Any buffered data is lost, and the file descriptor
(or FILE pointer) no longer refers to the file.
If your program needs to recover from errors when flushing buffered
data, it should make an explicit call to
fsync
(or
fflush
) before calling
fclose
.
Return Values
0
|
Indicates success.
|
EOF
|
Indicates that the file control block is not associated with an open
file.
|
fcntl
Performs controlling operations on an open file.
Format
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int fcntl (int file_desc, int request [, int
file_desc2]);
Arguments
file_desc
An open file descriptor obtained from a successful
open
,
fcntl
, or
pipe
function.
request
The operation to be performed.
file_desc2
A variable that depends on the value of the request argument.
Description
The
fcntl
function performs controlling operations on the open file specified by
the file_desc argument.
The values for the request argument are defined in the header
file
<fcntl.h>
, and include the following:
F_DUPFD
|
Returns a new file descriptor that is the lowest numbered available
(that is, not already open) file descriptor greater than or equal to
the third argument (
file_desc2) taken as an integer of type
int
.
The new file descriptor refers to the same file as the original file
descriptor (
file_desc). The FD_CLOEXEC flag associated with the new file
descriptor is cleared to keep the file open across calls to one of the
exec functions.
The following two calls are equivalent:
fid = dup(file_desc);
fid = fcntl(file_desc, F_DUPFD, 0);
The following call
fid = dup2(file_desc, file_desc2);
is similar (but not equivalent) to:
close(file_desc2);
fid = fcntl(file_desc, F_DUPFD, file_desc2);
|
F_GETFD
|
Gets the value of the close-on-exec flag associated with the file
descriptor
file_desc. File descriptor flags are associated with a single
file descriptor and do not affect other file descriptors that refer to
the same file. The
file_desc2 argument should not be specified.
|
F_SETFD
|
Sets the close-on-exec flag associated with
file_desc to the value of the third argument, taken as type
int
:
If the third argument is 0 (zero), the file remains open across the
exec functions, which means that a child process spawned by the exec
function inherits this file descriptor from the parent.
If the third argument is FD_CLOEXEC, the file is closed on
successful execution of the next exec function, which means that the
child process spawned by the exec function will not inherit this file
descriptor from the parent.
|
Return Values
n
|
Upon successful completion, the value returned depends on the value of
the
request argument as follows:
- F_DUPFD -- Returns a new file descriptor.
- F_GETFD -- Returns FD_CLOEXEC or 0 (zero).
- F_SETFD -- Returns a value other than --1.
|
--1
|
Indicates that an error occurred. The function sets
errno to the following value:
- EBADF -- The
file_desc argument is not a valid open file descriptor and the
file_desc2 argument is negative or greater than or equal to
the per-process limit.
- EFAULT -- The
file_desc2 argument is an invalid address.
- EINVAL -- The
request argument is F_DUPFD and the
file_desc2 argument is negative or greater than or equal to
OPEN_MAX.
Either the OPEN_MAX value or the per-process soft descriptor limit
is checked.
An illegal value was provided for the
request argument.
- EMFILE -- The
request argument is F_DUPFD and too many or OPEN_MAX file
descriptors are currently open in the calling process, or no file
descriptors greater than or equal to argument are available.
Either the OPEN_MAX value or the per-process soft descriptor limit
is checked.
- ENOMEM -- The system was unable to allocate memory for the
requested file descriptor.
|
fcvt
Converts its argument to a null-terminated string of ASCII digits and
returns the address of the string. The string is stored in a
thread-specific location created by the Compaq C RTL.
Format
#include <stdlib.h>
char *fcvt (double value, int ndigits, int
*decpt, int *sign);
Arguments
value
An object of type
double
that is converted to a null-terminated string of ASCII digits.
ndigits
The number of ASCII digits after the decimal point to be used in the
converted string.
decpt
The position of the decimal point relative to the first character in
the returned string. The returned string does not contain the actual
decimal point. A negative
int
value means that the decimal point is decpt number of spaces
to the left of the returned digits (the spaces are filled with zeros).
A 0 value means that the decimal point is immediately to the left of
the first digit in the returned string.
sign
An integer value that indicates whether the value argument is
positive or negative. If value is negative, the
fcvt
function places a nonzero value at the address specified by
sign. Otherwise, the functions assign 0 to the address
specified by sign.
Description
This function converts value to a null-terminated string and
returns a pointer to it. The resulting low-order digit is rounded to
the correct digit for outputting ndigits digits in C F-format.
The decpt argument is assigned the position of the decimal
point relative to the first character in the string.
In C F-format, ndigits is the number of digits desired after
the decimal point. Very large numbers produce a very long string of
digits before the decimal point, and ndigit of digits after
the decimal point. For large numbers, it is preferable to use the
gcvt
or
ecvt
function so that E-format is used.
Repeated calls to the
fcvt
function overwrite any existing string.
The
ecvt
,
fcvt
, and
gcvt
functions represent the following special values specified in the IEEE
Standard for floating-point arithmetic:
Value |
Representation |
Quiet NaN
|
NaNQ
|
Signalling NaN
|
NaNS
|
+Infinity
|
Infinity
|
--Infinity
|
--Infinity
|
The sign associated with each of these values is stored into the
sign argument. In IEEE floating-point representation, a value
of 0 (zero) can be positive or negative, as set by the sign
argument.
See also
gcvt
and
ecvt
in this section.
Return Value
x
|
A pointer to the converted string.
|
fdopen
Associates a file pointer with a file descriptor returned by an
open
,
creat
,
dup
,
dup2
, or
pipe
function.
Format
#include <stdio.h>
FILE *fdopen (int file_desc, char *a_mode);
Arguments
file_desc
The file descriptor returned by
open
,
creat
,
dup
,
dup2
, or
pipe
.
a_mode
The access mode indicator. See the
fopen
function in this section for a description. Note that the access mode
specified must agree with the mode used to open the file originally.
This includes binary/text access mode ("b" mode on
fdopen
and the "ctx=bin" option on
creat
or
open
).
Description
This function allows you to access a file, originally opened by one of
the UNIX I/O functions, with Standard I/O functions. Ordinarily, a file
can be accessed by either a file descriptor or by a file pointer, but
not both, depending on the way you open it. For more information, see
Chapters 1 and 2.
Return Values
pointer
|
Indicates that the operation has succeeded.
|
NULL
|
Indicates that an error has occurred.
|
feof
Tests a file to see if the end-of-file has been reached.
Format
#include <stdio.h>
int feof (FILE *file_ptr);
Argument
file_ptr
A file pointer.
Return Values
nonzero integer
|
Indicates that the end-of-file has been reached.
|
0
|
Indicates that the end-of-file has not been reached.
|
ferror
Returns a nonzero integer if an error occurred while reading or writing
a file.
Format
#include <stdio.h>
int ferror (FILE *file_ptr);
Argument
file_ptr
A file pointer.
Description
A call to
ferror
continues to return a nonzero integer until the file is closed or until
clearerr
is called.
Return Values
0
|
Indicates success.
|
nonzero integer
|
Indicates that an error has occurred.
|
fflush
Writes out any buffered information for the specified file.
Format
#include <stdio.h>
int fflush (FILE *file_ptr);
Argument
file_ptr
A file pointer. If this argument is a NULL pointer, all buffers
associated with all currently open files are flushed.
Description
The output files are normally buffered only if they are not directed to
a terminal, except for stderr, which is not buffered by default.
The
fflush
function flushes the Compaq C RTL buffers. However, RMS has its own
buffers. The
fflush
function does not guarantee that the file will be written to disk. (See
the description of
fsync
for a way to flush buffers to disk.)
If the file pointed to by file_ptr was opened in record mode
and if there is unwritten data in the buffer, then
fflush
always generates a record.
Return Values
0
|
Indicates that the operation is successful.
|
EOF
|
Indicates that the buffered data cannot be written to the file, or that
the file control block is not associated with an output file.
|
ffs
Finds the index of the first bit set in a string.
Format
#include <strings.h>
int ffs (int iteger);
Arguments
integer
The integer to be examined for the first bit set.
Description
This function finds the first bit set (beginning with the least
significant bit) and returns the index of that bit. Bits are numbered
starting at 1 (the least significant bit).
Return Values
x
|
The index of the first bit set.
|
0
|
If
index is 0.
|
fgetc
Returns the next character from a specified file.
Format
#include <stdio.h>
int fgetc (FILE *file_ptr);
Argument
file_ptr
A pointer to the file to be accessed.
Description
See the
getc
macro in this section.
Return Values
x
|
The returned character.
|
EOF
|
Indicates the end-of-file or an error.
|
fgetname
Returns the file specification associated with a file pointer.
Format
#include <stdio.h>
char *fgetname (FILE *file_ptr, char *buffer, ...);
Function Variants This function also has variants named
_fgetname32
and
_fgetname64
for use with 32-bit and 64-bit pointer sizes, respectively. See
Section 1.10 for more information on using pointer-size-specific
functions.
Arguments
file_ptr
A file pointer.
buffer
A pointer to a character string that is large enough to hold the file
specification.
...
An optional additional argument that can be either 1 or 0. If you
specify 1, the
fgetname
function returns the file specification in OpenVMS format. If you
specify 0,
fgetname
returns the file specification in UNIX style format. If you do not
specify this argument,
fgetname
returns the file name according to your current command language
interpreter. For more information about UNIX style file specifications,
see Section 1.4.3.
Description
This function places the file specification at the address given in the
buffer. The buffer should be an array large enough to contain a fully
qualified file specification (the maximum length is 256 characters).
Return Values
n
|
The address of the buffer.
|
0
|
Indicates an error.
|
Restriction
This function is specific to the Compaq C RTL and is not portable.
fgetpos
Stores the current file position for a given file.
Format
#include <stdio.h>
int fgetpos (FILE *stream, fpos_t *pos);
Arguments
stream
A file pointer.
pos
A pointer to an implementation-defined structure. The
fgetpos
function fills this structure with information that can be used on
subsequent calls to
fsetpos
.
Description
This function stores the current value of the file position indicator
for the stream pointed to by stream into the object pointed to
by pos.
Return Values
0
|
Indicates successful completion.
|
--1
|
Indicates that there are errors.
|
Example
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
int stat,
i;
int character;
char ch,
c_ptr[130],
d_ptr[130];
fpos_t posit;
/* Open a file for writing. */
if ((fp = fopen("file.dat", "w+")) == NULL) {
perror("open");
exit(1);
}
/* Get the beginning position in the file. */
if (fgetpos(fp, &posit) != 0)
perror("fgetpos");
/* Write some data to the file. */
if (fprintf(fp, "this is a test\n") == 0) {
perror("fprintf");
exit(1);
}
/* Set the file position back to the beginning. */
if (fsetpos(fp, &posit) != 0)
perror("fsetpos");
fgets(c_ptr, 130, fp);
puts(c_ptr); /* Should be "this is a test." */
/* Close the file. */
if (fclose(fp) != 0) {
perror("close");
exit(1);
}
}
|
|
|
|