Skip to Main Content United States    
PRODUCTS SUPPORT SOLUTIONS SERVICES
COMPAQ SOFTWARE
Compaq C

Compaq C
Run-Time Library Reference Manual for OpenVMS Systems


Previous Contents Index


fgets

Reads a line from the specified file, up to one less than the specified maximum number of characters or up to and including the new-line character, whichever comes first. The function stores the string in str.

Format

#include <stdio.h>

char *fgets (char *str, int maxchar, FILE *file_ptr);

Function Variants This function also has variants named _fgets32 and _fgets64 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

str

A pointer to a character string that is large enough to hold the information fetched from the file.

maxchar

The maximum number of characters to fetch.

file_ptr

A file pointer.

Description

This function terminates the line with a null character (\0). Unlike gets , fgets places the new-line character that terminates the input line into the user buffer if more than maxchar characters have not already been fetched.

When the file pointed to by file_ptr is opened in record mode, fgets treats the end of a record the same as a new-line character, so it reads up to and including a new-line character or to the end of the record.


Return Values

x Pointer to str.
NULL Indicates the end-of-file or an error. The contents of str are undefined if a read error occurs.

Example


#include <stdio.h> 
#include <stdlib.h> 
#include <unixio.h> 
 
main() 
{ 
    FILE *fp; 
    char c_ptr[130]; 
 
    /* Create a dummy data file  */ 
 
    if ((fp = fopen("file.dat", "w+")) == NULL) { 
        perror("open"); 
        exit(1); 
    } 
 
    fprintf(fp, "this is a test\n") ; 
    fclose(fp) ; 
 
    /* Open a file with some data -"this is a test"   */ 
 
    if ((fp = fopen("file.dat", "r+")) == NULL) { 
       perror("open error") ; 
        exit(1); 
    } 
 
    fgets(c_ptr, 130, fp); 
    puts(c_ptr);        /* Display what fgets got.  */ 
    fclose(fp); 
 
    delete("file.dat") ; 
} 


fgetwc

Reads the next character from a specified file, and converts it to a wide-character code.

Format

#include <wchar.h>

wint_t fgetwc (FILE *file_ptr);


Arguments

file_ptr

A pointer to the file to be accessed.

Description

Upon successful completion, the fgetwc function returns the wide-character code read from the file pointed to by file_ptr and converted to type wint_t . If the file is at end-of-file, the end-of-file indicator is set, and WEOF is returned. If an I/O read error occurred, then the error indicator is set, and WEOF is returned.

Applications can use ferror or feof to distinguish between an error condition and an end-of-file condition.


Return Values

x The wide-character code of the character read.
WEOF Indicates the end-of-file or an error. If a read error occurs, the function sets errno to one of the following:
  • EALREADY -- An operation is already in progress on the same file.
  • EBADF -- The file descriptor is not valid.
  • EILSEQ -- Invalid character detected.

fgetws

Reads a line of wide characters from a specified file.

Format

#include <wchar.h>

wchar_t *fgetws (wchar_t *wstr, int maxchar, FILE *file_ptr);

Function Variants This function also has variants named _fgetws32 and _fgetws64 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

wstr

A pointer to a wide-character string large enough to hold the information fetched from the file.

maxchar

The maximum number of wide characters to fetch.

file_ptr

A file pointer.

Description

This function reads wide characters from the specified file and stores them in the array pointed to by wstr. The function reads up to maxchar-1 characters or until the newline character is read, converted, and transferred to wstr, or until an end-of-file condition is encountered. The function terminates the line with a null wide character. fgetws places the newline that terminates the input line into the user buffer, unless maxchar characters have already been fetched.

Return Values

x Pointer to wstr.
NULL Indicates the end-of-file or an error occurred. The contents of wstr are undefined if a read error occurs. If a read error occurs, the function sets errno . For a list of possible errno values, see fgetwc in this section.

Example


#include <stdlib.h> 
#include <stdio.h> 
#include <locale.h> 
#include <wchar.h> 
 
main() 
{ 
    wchar_t wstr[80], 
           *ret; 
    FILE *fp; 
 
    /* Create a dummy data file  */ 
 
    if ((fp = fopen("file.dat", "w+")) == NULL) { 
        perror("open"); 
        exit(1); 
    } 
 
    fprintf(fp, "this is a test\n") ; 
    fclose(fp) ; 
 
   /* Open a test file containing : "this is a test" */ 
 
    if ((fp = fopen("file.dat", "r")) == (FILE *) NULL) { 
        perror("File open error"); 
        exit(EXIT_FAILURE); 
    } 
 
    ret = fgetws(wstr, 80, fp); 
    if (ret == (wchar_t *) NULL) { 
        perror("fgetws failure"); 
        exit(EXIT_FAILURE); 
    } 
 
    fputws(wstr, stdout); 
    fclose(fp); 
    delete("file.dat"); 
} 


fileno

Returns the file descriptor associated with the specified file pointer.

Format

#include <stdio.h>

int fileno (FILE *file_ptr);


Argument

file_ptr

A file pointer.

Description

If you are using DEC C Version 5.2 or lower, undefine the fileno macro:


#if defined(fileno) 
#undef fileno 
#endif 


Return Value

x Integer file descriptor.
--1 Indicates an error.

finite (ALPHA ONLY)

Returns the integer value 1 (True) when its argument is a finite number, or 0 (False) if not.

Format

#include <math.h>

int finite (double x);

int finitef (float x);

int double finitel (long double x);


Argument

x

A real value.

Description

The finite functions return 1 when -Infinity < x < +Infinity. They return 0 when |x| = Infinity, or x is a NaN.

floor

Returns the largest integer less than or equal to the argument.

Format

#include <math.h>

double floor (double x);

float floorf (float x); (ALPHA ONLY)

long double floorl (long double x); (ALPHA ONLY)


Argument

x

A real value.

Return Values

n The largest integer less than or equal to the argument.

fmod

Computes the floating-point remainder.

Format

#include <math.h>

double fmod (double x, double y);

float fmodf (float x, float y); (ALPHA ONLY)

long double fmodl (long double x, long double y); (ALPHA ONLY)


Arguments

x

A real value.

y

A real value.

Description

The fmod functions return the floating-point remainder of the first argument divided by the second. If the second argument is 0, the function returns 0.

Return Values

x The value f, which has the same sign as the argument x, such that x == i * y + f for some integer i, where the magnitude of f is less than the magnitude of y.
0 Indicates that y is 0.

fopen

Opens a file by returning the address of a FILE structure.

Format

#include <stdio.h>

FILE *fopen (const char *file_spec, const char *a_mode); (ANSI C)

FILE *fopen (const char *file_spec, const char *a_mode, ...); (COMPAQ C EXTENSION)


Arguments

file_spec

A character string containing a valid file specification.

a_mode

The access mode indicator. Use one of the following character strings: "r", "w", "a", "r+", "w+", "rb", "r+b", "rb+", "wb", "w+b", "wb+", "ab", "a+b", "ab+", or "a+".

These access modes have the following effects:

  • "r" opens an existing file for reading.
  • "w" creates a new file, if necessary, and opens the file for writing. If the file exists, it creates a new file with the same name and a higher version number.
  • "a" opens the file for append access. An existing file is positioned at the end-of-file, and data is written there. If the file does not exist, the Compaq C RTL creates it.

The update access modes allow a file to be opened for both reading and writing. When used with existing files, "r+" and "a+" differ only in the initial positioning within the file. The modes are as follows:

  • "r+" opens an existing file for read update access. It is opened for reading, positioned first at the beginning-of-file, but writing is also allowed.
  • "w+" opens a new file for write update access.
  • "a+" opens a file for append update access. The file is first positioned at the end-of-file (writing). If the file does not exist, the Compaq C RTL creates it.
  • "b" means binary access mode. In this case, no conversion of carriage-control information is attempted.

...

Optional file attribute arguments. The file attribute arguments are the same as those used in the creat function. For more information, see the creat function.

Description

If a version of the file exists, a new file created with fopen inherits certain attributes from the existing file unless those attributes are specified in the fopen call. The following attributes are inherited:
Record format
Maximum record size
Carriage control
File protection.

If you specify a directory in the file name and it is a search list that contains an error, Compaq C for OpenVMS Systems interprets it as a file open error.

The file control block can be freed with the fclose function, or by default on normal program termination.


Return Values

x File pointer.
NULL Indicates an error. The constant NULL is defined in the <stdio.h> header file to be the NULL pointer value. The function returns NULL to signal the following errors:
  • File protection violations
  • Attempts to open a nonexistent file for read access
  • Failure to open the specified file

fp_class (ALPHA ONLY)

Determine the class of IEEE floating-point values.

Format

#include <math.h>

int fp_class (double x);

int fp_classf (float x);

int fp_classl (long double x);


Arguments

x

An IEEE floating-point number.

Description

These functions determine the class of the specified IEEE floating-point number, returning a constant from the <fp_class.h> header file. They never cause an exception, even for signaling NaNs (Not-a-Number). These functions implement the recommended class(x) function in the appendix of the IEEE 754-1985 standard for binary floating-point arithmetic. The constants in <fp_class.h> refer to the following classes of values:
FP_SNAN Signaling NaN (Not-a-Number)
FP_QNAN Quiet NaN
FP_POS_INF +Infinity
FP_NEG_INF --Infinity
FP_POS_NORM positive normalized
FP_NEG_NORM negative normalized
FP_POS_DENORM positive denormalized
FP_NEG_DENORM negative denormalized
FP_POS_ZERO +0.0 (positive zero)
FP_NEG_ZERO --0.0 (negative zero)

Return Values

x A constant from the <fp_class.h> header file.

fpathconf

Retrieves file implementation characteristics.

Format

#include <unistd.h>

long int fpathconf (int filedes, int name);


Arguments

filedes

An open file descriptor.

name

The configuration attribute to query. If this attribute is not applicable to the file specified by the filesdes argument, fpathconf returns an error.

Description

This function allows an application to retrieve the characteristics of operations supported by the file system underlying the file named by the filesdes argument. Read, write, or execute permission of the named file is not required, but you must be able to search all directories in the path leading to the file.

Symbolic values for the name argument are defined in the <unistd.h> header file as follows:
_PC_LINK_MAX The maximum number of links to the file. If the filedes argument refers to a directory, the value returned applies to the directory itself.
_PC_MAX_CANON The maximum number of bytes in a canonical input line. This is applicable only to terminal devices.
_PC_MAX_INPUT The number of types allowed in an input queue. This is applicable only to terminal devices.
_PC_NAME_MAX Maximum number of bytes in a filename (not including a terminating null). The byte range value is between 13 and 255. This is applicable only to a directory file. The value returned applies to filenames within the directory.
_PC_PATH_MAX Maximum number of bytes in a pathname (not including a terminating null). The value is never larger than 65,535. This is applicable only to a directory file. The value returned is the maximum length of a relative pathname when the specified directory is the working directory.
_PC_PIPE_BUF Maximum number of bytes guaranteed to be written atomically. This is applicable only to a FIFO. The value returned applies to the referenced object. If the path argument refers to a directory, the value returned applies to any FIFO that exists or can be created within the directory.
_PC_CHOWN_RESTRICTED The value returned applies to any files (other than directories) that exist or can be created within the directory. This is applicable only to a directory file.
_PC_NO_TRUNC Returns 1 if supplying a component name longer than allowed by NAME_MAX causes an error. Returns 0 (zero) if long component names are truncated. This is applicable only to a directory file.
_PC_VDISABLE This is always 0 (zero); no disabling character is defined. This is applicable only to a terminal device.


Return Values

x The resultant value for the configuration attribute specified in the name argument.
--1 Indicates an error; errno is set to one of the following values:
  • EINVAL -- The name argument specifies an unknown or inapplicable characteristic.
  • EBADF -- the filedes argument is not a valid file descriptor.

fprintf

Performs formatted output to a specified file.

Format

#include <stdio.h>

int fprintf (FILE *file_ptr, const char *format_spec, ...);


Arguments

file_ptr

A pointer to the file to which the output is directed.

format_spec

A pointer to a character string that contains the format specification. For more information on format specifications and conversion characters, see Chapter 2.

...

Optional expressions whose resultant types correspond to conversion specifications given in the format specification.

If no conversion specifications are given, the output sources can be omitted. Otherwise, the function calls must have exactly as many output sources as there are conversion specifications, and the conversion specifications must match the types of the output sources.

Conversion specifications are matched to output sources in left-to-right order. Any excess output sources are ignored.


Description

An example of a conversion specification follows:


#include <stdio.h> 
 
main() 
{ 
   int  temp = 4, temp2 = 17; 
 
   fprintf(stdout, "The answers are %d, and %d.", temp, temp2); 
} 

Sample output (to the stdout file) from the previous example is as follows:


The answers are 4, and 17. 

For a complete description of the format specification and the output source, see Chapter 2.


Return Values

x The number of bytes written, excluding the null terminator.
Negative value Indicates an error. The function sets errno to one of the following:
  • EILSEQ -- Invalid character detected.
  • EINVAL -- Insufficient arguments.
  • ENOMEM -- Not enough memory available for conversion.
  • ERANGE -- Floating-point calculations overflow.
  • EVMSERR -- Non-translatable VMS error. vaxc$errno contains the VMS error code. This might indicate that conversion to a numeric value failed because of overflow.
  The function can also set errno to the following as a result of errors returned from the I/O subsystem:
  • EBADF -- The file descriptor is not valid.
  • EIO -- I/O error.
  • ENOSPC -- No free space on the device containing the file.
  • ENXIO -- Device does not exist.
  • EPIPE -- Broken pipe.
  • ESPIPE -- Illegal seek in a file opened for append.
  • EVMSERR -- Non-translatable VMS error. vaxc$errno contains the VMS error code. This indicates that an I/O error occurred for which there is no equivalent C error code.


Previous Next Contents Index
Buy Online or Call 1.800.888.0220      privacy statement and legal notices 
STORES CONTACT US SEARCH PRODUCTS SOLUTIONS OPTIONS DEVELOPERS