Table of Contents

Name

drange, irange - parser of ascii string into an array of values

Synopsis


int drange (n, rval, rexp)int    *n;double rval[];char   *rexp[];int irange
(n, rval, rexp)int  *n;int  rval[];char *rexp[];

Files


corona:/usr/pjt/clib    source

Description

The range(3) routines parse a string rexp containing a list of numbers into an array rval of n values. The list must be a comma-separated list of numbers. Each number however can consist of an implied do-loop, where the initial, final and optional the decrement (defaulted to 1 if absent) are separated by a colon. The routines are very forgiving with respect to the usage of spaces and tabs.

Example

The string 1,10:20:2,100 gets parsed into an array of values 1 10 12 14 16 18 20 100.

See Also

setrange(3)

Diagnostics

Low-level catastrophies (eg, parsing errors, wrong delimiters) generate messages via error(3) .

Bugs

A string like 1,,2 translates into an array of values 1,0,2, i.e. an empty slot (which could be interpreted as a default value) will be parsed as a zero.

At the moment a space character is treated as an end-of-string, instead of a string delimiter. One could think of reasons to change this, especially when the range(3) -routines are used in other-than-getparam(3) environments.

Author

Peter Teuben

Update History


16-Mar-87    created (PJT)
5-Aug-87    made skipping spaces and tabs more general (PJT)