---
name: "strspn"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/strspn"
---

# strspn(3)

string \[complementary\] span

## NAME

strspn, strcspn - string \[complementary\] span

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <string.h>
```

**size\_t strspn(const char \****s***, const char \****accept***);** **size\_t strcspn(const char \****s***, const char \****reject***);**

## DESCRIPTION

- **strspn**()

  The **strspn**() function calculates the length (in bytes) of the initial segment of *s* which consists entirely of bytes in *accept*.

- **strcspn**()

  The **strcspn**() function calculates the length of the initial segment of *s* which consists entirely of bytes not in *reject*.

-

  It is equivalent to

-

  ```
  (strpbrk(s, reject) ?: strnul(s)) - s
  ```

## RETURN VALUE

The **strspn**() function returns the number of bytes in the initial segment of *s* which consist only of bytes from *accept*.

The **strcspn**() function returns the number of bytes in the initial segment of *s* which are not in the string *reject*.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **strspn**(), **strcspn**() | Thread safety | MT-Safe |

## STANDARDS

C11, POSIX.1-2008.

## HISTORY

POSIX.1-2001, C89, SVr4, 4.3BSD.

## SEE ALSO

[**strchr**(3)](/strchr/3.md), [**string**(3)](/string/3.md), [**strpbrk**(3)](/strpbrk/3.md), [**strsep**(3)](/strsep/3.md), [**wcsspn**(3)](/wcsspn/3.md)
