|
Compaq C
Compaq C Run-Time Library Reference Manual for
OpenVMS Systems
rand
Returns pseudorandom numbers in the range 0 to 231 -- 1.
Format
#include <math.h>
int rand (void);
Description
This function uses the following ANSI Standard algorithm to return a
random number:
static unsigned int next = 1;
int rand(void)
{
next = next * 1103515245 + 12345;
return (next & RAND_MAX);
}
|
See also
srand
in this section.
For other random number algorithms, see
random
and all the *
48
functions.
random
Generates pseudorandom numbers in a more random sequence.
Format
#include <stdlib.h>
long int random (void);
Description
This function is a random number generator that has virtually the same
calling sequence and initialization properties as the
rand
function, but produces sequences that are more random. The low 12 bits
generated by
rand
go through a cyclic pattern. All bits generated by
random
are usable. For example,
random
() &1 produces a random binary value.
The
random
function uses a nonlinear additive feedback random number generator
employing a default state array size of 31 integers to return
successive pseudorandom numbers in the range from 0 to ( 231
)-1. The period of this random number generator is approximately 16*((
231 )-1). The size of the state array determines the period
of the random number generator. Increasing the state array size
increases the period.
With a full 256 bytes of state information, the period of the random
number generator is greater than 269 , and is sufficient for
most purposes.
Like the
rand
function, the
random
function produces by default a sequence of numbers that you can
duplicate by calling the
srandom
function with a value of 1 as the seed. The
srandom
function, unlike the
srand
function, does not return the old seed because the amount of state
information used is more than a single word.
See also
rand
,
srand
,
srandom
,
setstate
, and
initstate
in this section.
Return Values
[no]raw
Raw mode only works with the Curses input routines
[w]getch
and
[w]getstr
. Raw mode is not supported with the Compaq C RTL emulation of UNIX
I/O, Terminal I/O, or Standard I/O.
Format
#include <curses.h>
raw()
noraw()
Description
Raw mode reads are satisfied on one of two conditions: after a minimum
number (5) of characters are input at the terminal or after waiting a
fixed time (10 seconds) from receipt of any characters from the
terminal.
Example
/* Example of standard and raw input in Curses package. */
#include <curses.h>
main()
{
WINDOW *win1;
char vert = '.',
hor = '.',
str[80];
/* Initialize standard screen, turn echo off. */
initscr();
noecho();
/* Define a user window. */
win1 = newwin(22, 78, 1, 1);
leaveok(win1, TRUE);
leaveok(stdscr, TRUE);
box(stdscr, vert, hor);
/* Reset the video, refresh(redraw) both windows. */
mvwaddstr(win1, 2, 2, "Test line terminated input");
wrefresh(win1);
/* Do some input and output it. */
nocrmode();
wgetstr(win1, str);
mvwaddstr(win1, 5, 5, str);
mvwaddstr(win1, 7, 7, "Type something to clear screen");
wrefresh(win1);
/* Get another character then delete the window. */
wgetch(win1);
wclear(win1);
mvwaddstr(win1, 2, 2, "Test raw input");
wrefresh(win1);
/* Do some raw input 5 chars or timeout - and output it. */
raw();
getstr(str);
noraw();
mvwaddstr(win1, 5, 5, str);
mvwaddstr(win1, 7, 7, "Raw input completed");
wrefresh(win1);
endwin();
}
|
read
Reads bytes from a file and places them in a buffer.
Format
#include <unistd.h>
ssize_t read (int file_desc, void *buffer, size_t
nbytes); (ISO POSIX-1)
int read (int file_desc, void *buffer, int
nbytes); (COMPATABILITY)
Arguments
file_desc
A file descriptor. The specified file descriptor must refer to a file
currently opened for reading.
buffer
The address of contiguous storage in which the input data is placed.
nbytes
The maximum number of bytes involved in the read operation.
Description
This function returns the number of bytes read. The return value does
not necessarily equal nbytes. For example, if the input is
from a terminal, at most one line of characters is read.
Note
The
read
function does not span record boundaries in a record file and,
therefore, reads at most one record. A separate read must be done for
each record.
|
Return Values
n
|
The number of bytes read.
|
--1
|
Indicates a read error, including physical input errors, illegal buffer
addresses, protection violations, undefined file descriptors, and so
forth.
|
Example
#include <file.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
main()
{
int fd,
i;
char buf[10];
FILE *fp ; /* Temporary STDIO file */
/* Create a dummy data file */
if ((fp = fopen("test.txt", "w+")) == NULL) {
perror("open");
exit(1);
}
fputs("XYZ\n",fp) ;
fclose(fp) ;
/* And now practice "read" */
if ((fd = open("test.txt", O_RDWR, 0, "shr=upd")) <= 0) {
perror("open");
exit(0);
}
/* Read 2 characters into buf. */
if ((i = read(fd, buf, 2)) < 0) {
perror("read");
exit(0);
}
/* Print out what was read. */
if (i > 0)
printf("buf='%c%c'\n", buf[0], buf[1]);
close(fd);
}
|
readdir, readdir_r
Finds entries in a directory.
Format
#include <dirent.h>
struct dirent *readdir (DIR *dir_pointer);
int readdir_r (DIR *dir_pointer, struct dirent
*entry, struct dirent **result);
Arguments
dir_pointer
A pointer to the
dir
structure of an open directory.
entry
A pointer to a
dirent
structure that will be initialized with the directory entry at the
current position of the specified stream.
result
Upon successful completion, the location where a pointer to
entry is stored.
Description
The
readdir
function returns a pointer to a structure representing the directory
entry at the current position in the directory stream specified by
dir_pointer, and positions the directory stream at the next
entry. It returns a NULL pointer upon reaching the end of the directory
stream. The
dirent
structure defined in the
<dirent.h>
header file describes a directory entry.
The type
DIR
defined in the
<dirent.h>
header file represents a directory stream. A directory stream is an
ordered sequence of all the directory entries in a particular
directory. Directory entries represent files. You can remove files from
or add files to a directory asynchronously to the operation of the
readdir
function.
The pointer returned by the
readdir
function points to data that you can overwrite by another call to
readdir
on the same directory stream. This data is not overwritten by another
call to
readdir
on a different directory stream.
If a file is removed from or added to the directory after the most
recent call to the
opendir
or
rewinddir
function, a subsequent call to the
readdir
function might not return an entry for that file.
When it reaches the end of the directory, or when it detects an invalid
seekdir
operation, the
readdir
function returns the null value.
An attempt to seek to an invalid location causes the
readdir
function to return the null value the next time it is called. A previous
telldir
function call returns the position.
The
readdir_r
function is a reentrant version of
readdir
. In addition to dir_pointer, you must specify a pointer to a
dirent
structure in which the current directory entry of the specified stream
is returned.
If the operation is successful,
readdir_r
returns 0 and stores one of the two following pointers in
result:
- Pointer to entry if the entry was found
- NULL pointer if the end of the directory stream was reached
If an error occurred, an error value is returned that indicates the
cause of the error.
The storage pointed to by entry must be large enough for a
dirent
with an array of
char d_name
member containing at least NAME_MAX + 1 elements.
Example
See the description of
closedir
for an example.
Return Values
x
|
On successful completion of
readdir
, a pointer to an object of type
struct dirent
.
|
0
|
Successful completion of
readdir_r
.
|
x
|
On error, an error value (
readdir_r
only).
|
NULL
|
An error occurred or end of the directory stream (
readdir_r
only). If an error occurred,
errno
is set to a value indicating the cause.
|
realloc
Changes the size of the area pointed to by the first argument to the
number of bytes given by the second argument. These functions are
AST-reentrant.
Format
#include <stdlib.h>
void *realloc (void *ptr, size_t size);
Function Variants This function also has variants named
_realloc32
and
_realloc64
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
ptr
Points to an allocated area, or can be NULL.
size
The new size of the allocated area.
Description
If ptr is the NULL pointer, the behavior of the
realloc
function is identical to the
malloc
function.
The contents of the area are unchanged up to the lesser of the old and
new sizes. The ANSI C Standard states that "If the new size is larger
than the old size, the value of the newly allocated portion of memory
is indeterminate." For compatibility with old implementations,
Compaq C initializes the newly allocated memory to 0.
For efficiency, the previous actual allocation could have been larger
than the requested size. If it was allocated with
malloc
, the value of the portion of memory between the previous requested
allocation and the actual allocation is indeterminate. If it was
allocated with
calloc
, that same memory was initialized to 0. If your application relies on
realloc
initializing memory to 0, then use
calloc
instead of
malloc
to perform the initial allocation.
See also
free
,
cfree
,
calloc
, and
malloc
in this section.
Return Values
x
|
The address of the area, quadword-aligned. The address is returned
because the area may have to be moved to a new address to reallocate
enough space. If the area was moved, the space previously occupied is
freed.
|
NULL
|
Indicates that space cannot be reallocated (for example, if there is
not enough room).
|
[w]refresh
Repaint the specified window on the terminal screen. The
refresh
function acts on the
stdscr
window.
Format
#include <curses.h>
int refresh();
int wrefresh (WINDOW *win);
Argument
win
A pointer to the window.
Description
The result of this process is that the portion of the window not
occluded by subwindows or other windows appears on the terminal screen.
To see the entire occluded window on the terminal screen, call the
touchwin
function instead of the
refresh
or
wrefresh
function.
See also
touchwin
in this section.
Return Values
OK
|
Indicates success.
|
ERR
|
Indicates an error.
|
remove
Deletes a file.
Format
#include <stdio.h>
int remove (const char *file_spec);
Argument
file_spec
A pointer to the string that is an OpenVMS or a UNIX style file
specification. The file specification can include a wildcard in its
version number. So, for example, files of the form filename.txt;* can
be deleted.
Description
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 error.
The
remove
and
delete
functions are functionally equivalent in the Compaq C RTL.
See also
delete
in this section.
Return Values
0
|
Indicates success.
|
nonzero value
|
Indicates failure.
|
rename
Gives a new name to an existing file.
Format
#include <stdio.h>
int rename (const char *old_file_spec, const char
*new_file_spec);
Arguments
old_file_spec
A pointer to a string that is the existing name of the file to be
renamed.
new_file_spec
A pointer to a string that is to be the new name of the file.
Description
If you try to rename a file that is currently open, the behavior is
undefined. You cannot rename a file from one physical device to
another. Both the old and new file specifications must reside on the
same device.
If the new_file_spec does not contain a file extension, the
file extension of old_file_spec is used. To rename a file to
have no file extension, new_file_spec must contain a period
(.) For example, the following renames SYS$DISK:[]FILE.DAT to
SYS$DISK:[]FILE1.DAT:
rename("file.dat", "file1");
|
Whereas the following renames SYS$DISK:[]FILE.DAT to SYS$DISK:[]FILE1:
rename(file.dat", "file1.");
|
Note
Because the
rename
function does special processing of the file extension, the caller must
be careful when specifying the name of the renamed file in a call to a
C Run-Time Library function that accepts a filename argument. For
example, after the following call to the
rename
function, the new file should be opened as
fopen("bar.dat",...)
:
rename("foo.dat", "bar");
|
|
Return Values
0
|
Indicates success.
|
nonzero value
|
Indicates failure.
|
rewind
Sets the file to its beginning.
Format
#include <stdio.h>
void rewind (FILE *file_ptr); (ISO POSIX-1)
int rewind (FILE *file_ptr); (COMPAQ C EXTENSION)
Argument
file_ptr
A file pointer.
Description
The
rewind
function is equivalent to
fseek (file_ptr, 0, SEEK_SET)
. You can use the
rewind
function with either record or stream files.
A successful call to
rewind
clears the error indicator for the file.
The ANSI C standard defines
rewind
as not returning a value; therefore, the function prototype for
rewind
is declared with a return type of
void
. However, since a
rewind
can fail, and since previous versions of the Compaq C RTL have
declared
rewind
to return an
int
, the code for
rewind
does return 0 on success and --1 on failure.
See also
fseek
in this section.
rewinddir
Resets the position of the specified directory stream to the beginning
of a directory.
Format
#include <dirent.h>
void rewinddir (DIR *dir_pointer);
Arguments
dir_pointer
A pointer to the
dir
structure of an open directory.
Description
This function resets the position of the specified directory stream to
the beginning of the directory. It also causes the directory stream to
refer to the current state of the corresonding directory, the same as
using the
opendir
function. If the dir_pointer argument does not refer to a
directory stream, the effect is undefined.
The type
DIR
, defined in the
<dirent.h>
header file, represents a directory stream. A directory stream is an
ordered sequence of all the directory entries in a particular
directory. Directory entries represent files.
See also
opendir
in this section.
rindex
Searches for character in string.
Format
#include <strings.h>
char *rindex (const char *s, int c);
Function Variants This function also has variants named
_rindex32
and
_rindex64
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
s
The string to search.
c
The character to search for.
Description
This function is identical to the
strchr
function, and is provided for compatibility with some UNIX
implementations.
rint (ALPHA ONLY)
Rounds its argument to an integral value according to the current IEEE
rounding direction specified by the user.
Format
#include <math.h>
double rint (double x);
float rintf (float x,);
long double rintl (long double x);
Argument
x
A real number.
Description
The
rint
functions return the nearest integral value to x in the
direction of the current IEEE rounding mode specified on the
/ROUNDING_MODE command-line qualifier.
If the current rounding mode rounds toward negative Infinity, then
rint
is identical to
floor
. If the current rounding mode rounds toward positive Infinity, then
rint
is identical to
ceil
.
If |x| = Infinity,
rint
returns x.
Return Values
n
|
The nearest integral value to
x in the direction of the current IEEE rounding mode.
|
NaN
|
x is NaN;
errno
is set to EDOM.
|
|
|
|