Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bstring(3c)

printf(3s)



STRING(3C)              COMMAND REFERENCE              STRING(3C)



NAME
     string, strcat, strncat, strcatn, strcmp, strncmp, strcmpn,
     strcpy, strncpy, strcpyn, strlen, index, strchr, rindex,
     strrchr, strpbrk, strspn, strcspn, strtok, strtrn, strntrn -
     string operations

SYNOPSIS
     #include <strings.h>

     char *strcat(s1, s2)
     char *s1, *s2;

     char *strncat(s1, s2, n)
     char *s1, *s2;
     int n;

     char *strcatn(s1, s2, n)
     char *s1, *s2;
     int n;

     strcmp(s1, s2)
     char *s1, *s2;

     strncmp(s1, s2, n)
     char *s1, *s2;
     int n;

     strcmpn(s1, s2, n)
     char *s1, *s2;
     int n;

     char *strcpy(s1, s2)
     char *s1, *s2;

     char *strncpy(s1, s2, n)
     char *s1, *s2;
     int n;

     char *strcpyn(s1, s2, n)
     char *s1, *s2;
     int n;

     int strlen(s)
     char *s;

     char *index(s, c)
     char *s, c;

     char *strchr(s, c)
     char *s, c;





Printed 3/13/89                                                 1





STRING(3C)              COMMAND REFERENCE              STRING(3C)



     char *rindex(s, c)
     char *s, c;

     char *strrchr(s, c)
     char *s, c;

     char *strpbrk(s1, s2)
     char *s1, *s2;

     int strspn(s1, s2)
     char *s1, *s2;

     int strcspn(s1, s2)
     char *s1, *s2;

     char *strtok(s1, s2)
     char *s1, *s2;

     char *strtrn(s, from, to)
     char *s, *from, *to;

     char *strntrn(s, n, from, to)
     char *s, *from, *to;
     int n;

DESCRIPTION
     These functions operate on null-terminated strings.  They do
     not check for overflow of any receiving string.

     Strcat appends a copy of string s2 to the end of string s1.
     Strncat and strcatn copy at most n characters. Both return a
     pointer to the null-terminated result.

     Strcmp compares its arguments and returns an integer greater
     than, equal to, or less than 0, depending on if s1 is
     lexicographically greater than, equal to, or less than s2.
     Strncmp and strcmpn make the same comparison but looks at at
     most n characters.

     Strcpy copies string s2 to s1, stopping after the null
     character has been moved.
     Strncpy and strcpyn copy exactly n characters, truncating or
     null-padding s2; the target may not be null-terminated if
     the length of s2 is n or more. All three return s1.

     Strlen returns the number of nonnull characters in s.

     Index (rindex) returns a pointer to the first (last)
     occurrence of character c in string s, or 0 if c does not
     occur in the string. The null character terminating the
     string is considered to be part of the string.




Printed 3/13/89                                                 2





STRING(3C)              COMMAND REFERENCE              STRING(3C)



     Strchr is a synonym for index.
     Strrchr is a synonym for rindex.

     Strpbrk returns a pointer to the first occurrence in string
     s1 of any character from string s2, or NULL if no character
     from s2 exists in s1.

     Strspn (strcspn) returns the length of the initial segment
     of string s1 which consists entirely of characters from (
     not from ) string s2.

     Strtok considers the string s1 to consist of a sequence of
     zero or more text tokens separated by spans of one or more
     from the separator string s2. The first call (with pointer
     s1 specified) returns a pointer to the first character of
     the first token, and will have written a NULL character into
     s1 immediately following the returned token.  If there are
     no separators in the string, the entire string is returned.
     As long as the string pointed at by s1 remains unchanged,
     subsequent calls with 0 for the first argument will work
     through string s1 in this way until no tokens remain.  The
     separator string s2 may be different from call to call.
     When no token remains in s1, a NULL is returned.

     Strtrn and strntrn implement the function of the utility
     tr(1) in a subroutine. The string given is translated using
     a given key.  The string s is a pointer to the string to be
     translated.  The integer n is the maximum number of
     characters to be translated in the string.  From and to are
     pointers to strings containing the translation key. Each
     character position in each string has a corresponding
     character in the other.  If the key strings are not of equal
     length, the shorter is padded using the last character in
     the string (not including the null terminator).  As with
     tr(1), the key strings may contain range. The range a-e is
     expanded as abcde.  A reversed range, like e-a is not
     expanded, but is interpreted as the three characters e,-,
     and a.  If the from string pointer is NULL, the last set of
     key strings given are used again. In this way, a translation
     can be repeated a number of times without having the key
     strings expanded each time.

EXAMPLES
     For the following examples, constant strings are used, but
     pointers to strings work the same way.

     The following example uses strpbrk:

          strpbrk ("abcde", "ce")

     The pointer returned points to the string cde.




Printed 3/13/89                                                 3





STRING(3C)              COMMAND REFERENCE              STRING(3C)



     This example uses strspn:

          strspn ("abcde", "cda")

     The number returned is 1.

     The following example uses strcpy and strtok:

          char *s, *t;
          (void) strcpy (s, "field1:field2 field3");
          t = strtok (s, ": ");
          printf ("%s ", t);
          t = strtok (0, ": ");
          printf ("%s ", t);
          t = strtok (0, ": d");
          printf ("%s\n", t);

     This sequence of calls, when executed, cause the text:

          field1 field2 field3

     to be displayed on the standard output.

     The following example uses strncpy and strtrn.  In this
     example, each uppercase character in each string is
     converted to lowercase:

          char *s, *t;
          (void) strncpy (s, "First STRING.");
          t = strtrn (s, "A-Z", "a-z");
          printf ("%s\n", t);
          t = strtrn ("Second STRING.", 0);
          printf ("%s\n", t);

     When executed, the above code would display the following
     two lines on the standard output :

          first string.
          second string.

CAVEATS
     Note that comparison of characters outside of the seven-bit
     ASCII character set (for example, those with octal values
     greater than 0177) may be unpredictable except that all such
     characters will be considered either all greater than or all
     less than the standard ASCII character set.

     All string movement is performed character by character
     starting at the left (the first character in the string).
     Thus, overlapping moves toward the left will work as
     expected, but overlapping moves to the right may yield
     surprises.



Printed 3/13/89                                                 4





STRING(3C)              COMMAND REFERENCE              STRING(3C)



     Since the character NULL is the string terminator, the
     translation routines are not able to translate null
     characters.  The call:

          strtrn (string, chars, "")

     produces undefined results and should not be used.

SEE ALSO
     bstring(3c) and printf(3s).













































Printed 3/13/89                                                 5



%%index%%
na:312,262;
sy:574,4635;5593,2953;
de:8546,2093;11023,3190;
ex:14213,404;15001,1379;
ca:16380,646;17410,287;
se:17697,188;
%%index%%000000000156

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026