Annotation of researchv10dc/man/adm/man3/getfields.3, revision 1.1.1.1

1.1       root        1: .TH GETFIELDS 3
                      2: .CT 2 data_man
                      3: .SH NAME
                      4: getfields, getmfields, setfields \(mi break a string into fields
                      5: .SH SYNOPSIS
                      6: .nf
                      7: .B int getfields(str, ptrs, nptrs)
                      8: .B char *str, **ptrs;
                      9: .PP
                     10: .B int getmfields(str, ptrs, nptrs)
                     11: .B char *str, **ptrs;
                     12: .PP
                     13: .B void setfields(fielddelim)
                     14: .B char *fielddelim;
                     15: .fi
                     16: .SH DESCRIPTION
                     17: .I Getfields
                     18: breaks the null-terminated string
                     19: .I str
                     20: into at most
                     21: .I nptrs
                     22: null-terminated fields and places pointers to the start of these fields in the array
                     23: .IR ptrs .
                     24: It returns the number of fields
                     25: and terminates the list of pointers with a zero pointer.
                     26: It overwrites some of the bytes in
                     27: .IR str .
                     28: If there are
                     29: .I nptr
                     30: or more fields, the list will not end with zero
                     31: and the last `field' will extend to the end of the
                     32: input string and may contain delimiters.
                     33: .PP
                     34: A field is defined as a maximal sequence of characters not in a set
                     35: of field delimiters.
                     36: Adjacent fields are separated by exactly one delimiter.
                     37: No field follows a delimiter at the end of string.
                     38: Thus a string of just two delimiter characters
                     39: contains two empty fields,
                     40: and a nonempty string with no delimiters contains
                     41: one field.
                     42: .PP
                     43: .I Getmfields
                     44: is the same as
                     45: .I getfields
                     46: except that fields are separated by maximal strings of
                     47: field delimiters rather than just one.
                     48: .PP
                     49: .I Setfields
                     50: makes the field delimiters (space and tab by default)
                     51: be the characters of the string
                     52: .I fielddelim.
                     53: .SH EXAMPLES
                     54: Print the words in a string, where words are non-whitespace
                     55: strings.
                     56: There is no bound on the number of words.
                     57: .EX
                     58: printwords(string)
                     59: char *string;
                     60: {
                     61:        char *ptrs[2];
                     62:        int n;
                     63:        setfields(" \et\en");           
                     64:        for(n=2; n>=2; string=ptrs[1]) {
                     65:                n = getmfields(string, ptrs, 2);                
                     66:                if(n == 0)
                     67:                        break;
                     68:                if(ptrs[0][0] != 0)     /* skip initial blanks */
                     69:                        printf("%s\en", ptrs[0]);               
                     70:        }
                     71: }
                     72: .EE
                     73: .SH SEE ALSO
                     74: .IR string (3)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.