strsplit man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

STRSPLIT(3)		     C Programmer's Manual		   STRSPLIT(3)

NAME
       strsplit - split string into words

SYNOPSIS
       #include <publib.h>
       int strsplit(char *src, char **words, int maxw, const char *sep);

DESCRIPTION
       strsplit	 splits	 the src string into words separated by one or more of
       the characters in sep (or by whitespace	characters,  as	 specified  by
       isspace(3),  if	sep  is	 the empty string).  Pointers to the words are
       stored in successive elements in the array pointed  to  by  words.   No
       more  than  maxw	 pointers  are stored.	The input string is modifed by
       replacing the separator character following a word with '\0'.  However,
       if  there are more than maxw words, only maxw-1 words will be returned,
       and the maxwth pointer in the array will	 point	to  the	 rest  of  the
       string.	 If  maxw is 0, no modification is done.  This can be used for
       counting how many words there are, e.g., so that	 space	for  the  word
       pointer table can be allocated dynamically.

       strsplit	 splits	 the src string into words separated by one or more of
       the characters in sep (or by whitespace characters, as defined by  iss‐
       pace(3),	 if  sep  is the empty string).	 The src string is modified by
       replacing the separator character after each word with '\0'.  A pointer
       to each word is stored into successive elements of the array words.  If
       there are more than maxw words, a '\0' is stored after the first maxw-1
       words only, and the words[maxw-1] will contain a pointer to the rest of
       the string after the word in words[maxw-2].

RETURN VALUE
       strsplit returns the total number of words in the input string.

EXAMPLE
       Assuming that words are separated by white space, to count  the	number
       of words on a line, one might say the following.

	    n = strsplit(line, NULL, 0, "");

       To print out the fields of a colon-separated list (such as PATH, or a
       line from /etc/passwd or /etc/group), one might do the following.

	    char *fields[15];
	    int i, n;

	    n = strsplit(list, fields, 15, ":");
	    if (n > 15)
		 n = 15;
	    for (i = 0; i < n; ++i)
		 printf("field %d: %s\n", i, fields[i]);

       In real life, one would of course prefer to not restrict the number of
       fields, so one might either allocated the pointer table dynamically
       (first counting the number of words using something like the first
       example), or realize that since it is the original string that is
       being modified, one can do the following:

	    char *fields[15];
	    int i, n;

	    do {
		 n = strsplit(list, fields, 15, ":");
		 if (n > 15)
		      n = 15;
		 for (i = 0; i < n; ++i)
		      printf("field %d: %s\n", i, fields[i]);
		 list = field[n-1] + strlen(field[n-1]);
	    } while (n == 15);

SEE ALSO
       publib(3), strtok(3)

AUTHOR
       The  idea  for  this  function  came  from  C-News source code by Henry
       Spencer and Geoff Collyer.  Their function is very  similar,  but  this
       implementation is by Lars Wirzenius (lars.wirzenius@helsinki.fi)

Publib			     C Programmer's Manual		   STRSPLIT(3)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net