# _CP_key

_CP_key is equivalent to the `key(*string1*, *expression*, *string2*, *string3*)` BASIC statement.

## Syntax

```
int _CP_key(CPSTR* string1, int expression, CPSTR** string2, CPSTR** string3,
int* value)
```

## Description

An additional parameter, *value*, is available from C that returns the current value
of the key if it is MultiValued. This function returns -1 if an error
occurs. The error code is contained in _CP_errno. If the key operator is invalid, _CP_errno will
contain PE_ILL_KEY. If the root pointer is invalid, _CP_errno will contain PE_NOTROOT.

## Example(s)

```
/* Gets the first item-ID which contains "a" as attribute 1. */

CPSTR * n = _CP_mkstr("myfile");
CPSTR * a = _CP_mkstr("a1");
CPSTR * op = _CP_mkstr("n");
CPSTR * k = _CP_mkstr("a");
CPSTR * i = _CP_str_null;
int r,dummy;

_CP_root(n,a,&r);
_CP_key(op,r,&k,&i,&dummy);
```

## See also

- [C functions overview](https://d3codex.com/cfunctions/c-functions-overview/)

---
Source: https://d3codex.com/cfunctions/cp-key/ - part of the D3Codex reference.
