---
name: "index"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/index/3"
---

# index(3)

locate character in string

## NAME

**index**, **rindex** – locate character in string

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<strings.h\>**

*char \**\

**index**(*const char \*s*, *int c*);

*char \**\

**rindex**(*const char \*s*, *int c*);

## DESCRIPTION

The **index**() and **rindex**() functions have been deprecated in favor of [strchr(3)](/strchr/3.md) and [strrchr(3)](/strrchr/3.md).

The **index**() function locates the first occurrence of *c* (converted to a *char*) in the string pointed to by *s*. The terminating null character is considered part of the string; therefore if *c* is ‘\\0’, the functions locate the terminating ‘\\0’.

The **rindex**() function is identical to **index**(), except it locates the last occurrence of *c*.

## RETURN VALUES

The functions **index**() and **rindex**() return a pointer to the located character, or NULL if the character does not appear in the string.

## SEE ALSO

[memchr(3)](/memchr/3.md), [strchr(3)](/strchr/3.md), [strcspn(3)](/strcspn/3.md), [strpbrk(3)](/strpbrk/3.md), [strrchr(3)](/strrchr/3.md), [strsep(3)](/strsep/3.md), [strspn(3)](/strspn/3.md), [strstr(3)](/strstr/3.md), [strtok(3)](/strtok/3.md)

## HISTORY

The **index**() and **rindex**() functions appeared in Version 6 AT&T UNIX. Their prototypes existed previously in ⟨string.h⟩ before they were moved to ⟨strings.h⟩ for IEEE Std 1003.1-2001 (“POSIX.1”) compliance. The functions are not specified by IEEE Std 1003.1-2008 (“POSIX.1”).
