  | 
		
		
			
			
Compaq C
Compaq C Run-Time Library Reference Manual for 
OpenVMS Systems
 
 
 
atanh  (ALPHA ONLY)
 
Returns the hyperbolic arc tangent of its argument.
 
 
Format
#include <math.h>
double atanh (double x);
 
float atanhf (float x);
 
long double atanhl (long double x);
 
  
 
Argument
x
A radian expressed as a real value in the domain [-1, 1].
 
 
Description
The
atanh
 functions return the hyperbolic arc tangent of x. The
atanh
 function is the inverse function of
tanh
 where
atanh
(
tanh
(x)) = x.
|x| > 1 is an invalid argument.
  
 
atexit
 
Registers a function that is called without arguments at program 
termination.
 
 
Format
#include <stdlib.h>
int atexit (void (*func) (void));
 
  
 
Argument
func
A pointer to the function to be registered.
 
 
Return Values
  
    | 
      0
     | 
    
      Indicates that the registration has succeeded.
     | 
   
  
    | 
      nonzero
     | 
    
      Indicates failure.
     | 
   
 
 
 
Restriction
The
longjmp
 function cannot be executed from within the handler, because the 
 destination address of the
longjmp
no longer exists.
 
 
Example
 
  
    
       
      
#include <stdlib.h> 
#include <stdio.h> 
 
static void hw(void); 
 
main() 
{ 
    atexit(hw); 
} 
    
static void hw() 
{ 
        puts("Hello, world\n"); 
} 
 |   
Running this example produces the following output:
 
 
 
 
atof
 
Converts an ASCII character string to a double-precision number.
 
 
Format
#include <stdlib.h>
double atof (const char *nptr);
 
  
 
Argument
nptr
A pointer to the character string to be converted to a double-precision 
number. The string is interpreted by the same rules that are used to 
interpret floating constants.
 
 
Description
The string to be converted has the following format:
  
    
       
      
[white-spaces][+|-]digits[radix-character][digits][e|E[+|-]integer] 
     | 
   
 
 
Where radix-character is defined in the current locale.
 
The first unrecognized character ends the conversion.
 
This function is equivalent to
strtod(nptr, (char**) NULL)
.
  
 
Return Values
  
    | 
      x
     | 
    
      The converted value.
     | 
   
  
    | 
      0
     | 
    
      Indicates an underflow or the conversion could not be performed. The 
      function sets
      
      errno
      
               to ERANGE or EINVAL, respectively.
     | 
   
  
    | 
      (+/-)HUGE_VAL
     | 
    
      Indicates overflow;
      
      errno
      
               is set to ERANGE.
     | 
   
 
 
 
atoi, atol
 
Convert strings of ASCII characters to the appropriate numeric values.
 
 
Format
#include <stdlib.h>
int atoi (const char *nptr);
 
long int atol (const char *nptr);
 
  
 
Argument
nptr
A pointer to the character string to be converted to a numeric value.
 
 
Description
The
atoi
 and
atol
 functions convert the initial portion of a string to its decimal
int
 or
long int
 value, respectively. The
atoi
 and
atol
 functions do not account for overflows resulting from the conversion. 
 The string to be converted has the following format:
  
    
       
      
[white-spaces][+|-]digits 
     | 
   
 
 
The function call
atol (str)
 is equivalent to
strtol (str, (char**)NULL, 10)
, and the function call
atoi (str)
 is equivalent to
(int) strtol (str, (char**)NULL, 10)
, except, in both cases, for the behavior on error.
  
 
Return Value
 
 
atoq, atoll  (ALPHA ONLY)
 
Convert strings of ASCII characters to the appropriate numeric values.
atoll
 is a synonym for
atoq
.
 
 
Format
#include <stdlib.h>
__int64 atoq (const char *nptr);
 
__int64 atoll (const char *nptr);
 
  
 
Argument
nptr
A pointer to the character string to be converted to a numeric value.
 
 
Description
The
atoq
 (or
atoll
) function converts the initial portion of a string to its decimal
__int64
 value. This function does not account for overflows resulting from the 
 conversion. The string to be converted has the following format:
  
    
       
      
[white-spaces][+|-]digits 
     | 
   
 
 
The function call
atoq (str)
 is equivalent to
strtoq (str, (char**)NULL, 10)
, except for the behavior on error.
  
 
Return Value
 
 
basename
 
Returns the last component of a path name.
 
 
Format
#include <libgen.h>
char *basename (char *path);
 
  
Function Variants This function also has variants named
_basename32
 and
_basename64
 for use with 32-bit and 64-bit pointer sizes, respectively. See 
 Section 1.10 for more information on using pointer-size-specific 
 functions.
 
Argument
path
A UNIX style pathname from which the base path name is extracted.
 
 
Description
This function takes the UNIX style pathname pointed to by path 
and returns a pointer to the pathname's final component, deleting any 
trailing slash (/) characters.
If path consists entirely of the slash (/) character, the 
function returns a pointer to the string "/".
 
If path is a NULL pointer or points to an empty string, the 
function returns a pointer to the string ".".
 
The
basename
 function can modify the string pointed to by path.
  
 
Return Values
  
    | 
      x
     | 
    
      A pointer to the final component of
      path.
     | 
   
  
    | 
      "/"
     | 
    
      If
      path consists entirely of the '/' character.
     | 
   
  
    | 
      "."
     | 
    
      If
      path is a NULL pointer or points to an empty string.
     | 
   
 
 
 
bcmp
 
Compares byte strings.
 
 
Format
#include <strings.h>
void bcmp (const void *string1, const void *string2, 
size_t length);
 
  
 
Arguments
string1, string2
The byte strings to be compared.
length
The length (in bytes) of the strings.
 
 
Description
The
bcmp
 function compares the byte string in string1 against the byte 
 string in string2.
Unlike the string functions, there is no checking for null bytes. 
Zero-length strings are always identical.
 
Note that
bcmp
 is equivalent to
memcmp
, which is defined by the ANSI C Standard. Therefore, using
memcmp
 is recommended for portable programs.
  
 
Return Values
  
    | 
      0
     | 
    
      The strings are identical.
     | 
   
  
    | 
      Nonzero
     | 
    
      The strings are not identical.
     | 
   
 
 
 
bcopy
 
Copies byte strings.
 
 
Format
#include <strings.h>
void bcopy (const void *source, void *destination, 
size_t length);
 
  
 
Arguments
source
Pointer to the source string.
destination
Pointer to the destination string.
length
The length (in bytes) of the string.
 
 
Description
The
bcopy
 function operates on variable-length strings of bytes. It copies the 
 value of the length argument in bytes from the string in the 
 source argument to the string in the destination 
 argument.
Unlike the string functions, there is no checking for null bytes. If 
the length argument is 0 (zero), no bytes are copied.
 
Note that
bcopy
 is equivalent to
memcpy
, which is defined by the ANSI C Standard. Therefore, using
memcpy
 is recommended for portable programs.
  
 
box
 
Draws a box around the window using the character vert as the 
character for drawing the vertical lines of the rectangle, and 
hor for drawing the horizontal lines of the rectangle.
 
 
Format
#include <curses.h>
int box (WINDOW *win, char vert, char hor);
 
  
 
Arguments
win
The address of the window.
vert
The character for the vertical edges of the window.
hor
The character for the horizontal edges of the window.
 
 
Description
This function copies boxes drawn on subwindows onto the underlying 
window. Use caution when using functions such as
overlay
 and
overwrite
 with boxed subwindows. Such functions copy the box onto the underlying 
 window.
 
 
Return Values
  
    | 
      OK
     | 
    
      Indicates success.
     | 
   
  
    | 
      ERR
     | 
    
      Indicates an error.
     | 
   
 
 
 
brk
 
Determines the lowest virtual address that is not used with the program.
 
 
Format
#include <stdlib.h>
void *brk (unsigned long int addr);
 
  
 
Argument
addr
The lowest address, which the function rounds up to the next multiple 
of the page size. This rounded address is called the break 
address.
 
 
Description
An address that is greater than or equal to the break address and less 
than the stack pointer is considered to be outside the program's 
address space. Attempts to reference it will cause access violations.
When a program is executed, the break address is set to the highest 
location defined by the program and data storage areas. Consequently,
brk
 is needed only by programs that have growing data areas.
  
 
Return Values
  
    | 
      n
     | 
    
      The new break address.
     | 
   
  
    | 
      (void *)(--1)
     | 
    
      Indicates that the program is requesting too much memory.
      
      errno
      
               and
      
      vaxc$errno
      
               are updated.
     | 
   
 
 
 
Restriction
Unlike other C library implementations, the Compaq C RTL memory 
allocation functions (such as
malloc
) do not rely on
brk
 or
sbrk
 to manage the program heap space. Consequently, on OpenVMS systems, 
 calling
brk
 or
sbrk
 can interfere with memory allocation routines. The
brk
 and
sbrk
 functions are provided only for compatibility purposes.
 
 
bsearch
 
Performs a binary search. It searches an array of sorted objects for a 
specified object.
 
 
Format
#include <stdlib.h>
void *bsearch (const void *key, const void *base, 
size_t nmemb, size_t size, int (*compar) 
  (const void *, const void *));
 
  
Function Variants This function also has variants named
_bsearch32
 and
_bsearch64
 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
key
A pointer to the object to be sought in the array. This pointer should 
be of type pointer-to-object and cast to type pointer-to-void.
base
A pointer to the initial member of the array. This pointer should be of 
type pointer-to-object and cast to type pointer-to-void.
nmemb
The number of objects in the array.
size
The size of an object, in bytes.
compar
A pointer to the comparison function.
 
 
Description
The array must first be sorted in increasing order according to the 
specified comparison function pointed to by compar.
Two arguments are passed to the comparison function pointed to by 
compar. The two arguments point to the objects being compared. 
Depending on whether the first argument is less than, equal to, or 
greater than the second argument, the comparison function must return 
an integer less than, equal to, or greater than 0.
 
It is not necessary for the comparison function (compar) to 
compare every byte in the array. Therefore, the objects in the array 
can contain arbitrary data in addition to the data being compared.
 
Since it is declared as type pointer-to-void, the value returned must 
be cast or assigned into type pointer-to-object.
  
 
Return Values
  
    | 
      x
     | 
    
      A pointer to the matching member of the array or a null pointer if no 
      match is found.
     | 
   
  
    | 
      NULL
     | 
    
      Indicates that the key cannot be found in the array.
     | 
   
 
 
 
Example
 
  
    
       
      
 
#include <stdio.h> 
#include <stdlib.h> 
 
#define SSIZE 30 
 
extern int compare();  /* prototype for comparison function */ 
 
int array[SSIZE] = {30, 1, 29, 2, 28, 3, 27, 4, 26, 5, 
                    24, 6, 23, 7, 22, 8, 21, 9, 20, 10, 
                    19, 11, 18, 12, 17, 13, 16, 14, 15, 25}; 
 
/*  This program takes an unsorted array, sorts it using qsort, */ 
/*  and then calls bsearch for each element in the array,       */ 
/*  making sure that bsearch returns the correct element.       */ 
 
main() 
{ 
    int i; 
    int failure = FALSE; 
    int *rkey; 
 
    qsort(array, SSIZE, sizeof (array[0]), &compare); 
 
    /* search for each element */ 
    for (i = 0; i < SSIZE - 1; i++) { 
        /* search array element i */ 
        rkey = bsearch((array + i), array, SSIZE, 
                        sizeof(array[0]), &compare); 
        /* check for successful search */ 
        if (&array[i] != rkey) { 
            printf("Not in array, array element %d\n", i); 
            failure = TRUE; 
            break; 
        } 
    } 
    if (!failure) 
        printf("All elements successfully found!\n"); 
} 
 
/*  Simple comparison routine.  */ 
/*                              */ 
/*  Returns:  = 0 if a == b     */ 
/*            < 0 if a < b      */ 
/*            > 0 if a > b      */ 
 
int compare(int *a, int *b) 
{ 
    return (*a - *b); 
} 
 |   
This example program outputs the following:
 
 
  
    
       
      
All elements successfully found! 
 
 |   
 
 
btowc
 
Converts a one-byte multibyte character to a wide character in the 
initial shift state.
 
 
Format
#include <wchar.h>
wint_t btowc (int c);
 
  
 
Arguments
c
The character to be converted to a wide-character representation.
 
 
Description
This function determines whether (
unsigned char
)c is a valid one-byte multibyte character in the initial 
shift state, and if so, returns a wide-character representation of that 
character.
 
 
Return Values
  
    | 
      x
     | 
    
      The wide-character representation of
      
      unsigned char
      
               c
      
              .
     | 
   
  
    | 
      WEOF
     | 
    
      Indicates an error. The
      c argument has the value EOF or does not constitute a valid 
      one-byte multibyte character in the initial shift state.
     | 
   
 
 
 
bzero
 
Copies null characters into byte strings.
 
 
Format
#include <strings.h>
void bzero (void *string, size_t length);
 
  
 
Arguments
string
Specifies the byte string into which you want to copy null characters.
length
Specifies the length (in bytes) of the string.
 
 
Description
This function copies null characters ('\0') into the byte string 
pointed to by string for length bytes. If 
length is 0 (zero), then no bytes are copied.
 
 
cabs
 
Returns the absolute value of a complex number.
 
 
Format
#include <math.h>
double cabs (cabs_t z);
 
float cabsf (cabsf_t z);  (ALPHA ONLY)
 
long double cabsl (cabsl_t z);  (ALPHA ONLY)
 
  
 
Arguments
z
A structure of type
cabs_t
,
cabsf_t
, or
cabsl_t
. These types are defined in the
<math.h>
 header file as follows:
 
  
    
       
      
typedef struct {double x,y;} cabs_t; 
typedef struct { float x, y; } cabsf_t; (ALPHA ONLY)
typedef struct { long double x, y; } cabsl_t; (ALPHA ONLY)
 |   
 
 
Description
The
cabs
 functions return the absolute value of a complex number by computing 
 the Euclidean distance between its two points as the square root of 
 their respective squares:
 
On overflow, the return value is undefined.
 
The
cabs
,
cabsf
, and
cabsl
functions are equivalent to the
hypot
,
hypotf
, and
hypotl
 functions, respectively.
  
 
calloc
 
Allocates an area of zeroed memory. This function is AST-reentrant.
 
 
Format
#include <stdlib.h>
void *calloc (size_t number, size_t size);
 
  
Function Variants This function also has variants named
_calloc32
 and
_calloc64
 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
number
The number of items to be allocated.
size
The size of each item.
 
 
Description
The
calloc
 function initializes the items to 0.
See also
malloc
 and
realloc
 in this section.
  
 
Return Values
  
    | 
      n
     | 
    
      The address of the first byte, which is aligned on a quadword boundary.
     | 
   
  
    | 
      NULL
     | 
    
      Indicates an inability to allocate the space.
     | 
   
 
 
  
         | 
	 
	  | 
	 
		 
		 |