---
name: "rune"
section: "3g"
platform: "linux"
package: "libxg-dev"
version: "4.3-14"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/rune/3g"
---

# rune(3g)

rune/UTF conversion

## NAME

runetochar, chartorune, runelen, fullrune, utflen, utfrune, utfrrune, utfutf - rune/UTF conversion

## SYNOPSIS

```
#include <libc.h>
int	runetochar(char *s, Rune *r)
```

**int	chartorune(Rune \*r, char \*s)**

**int	runelen(long r)**

**int	fullrune(char \*s, int n)**

**int	utflen(char \*s)**

**char\*	utfrune(char \*s, long c)**

**char\*	utfrrune(char \*s, long c)**

**char\*	utfutf(char \*s1, char \*s2)**

## DESCRIPTION

These routines convert to and from a UTF byte stream and runes.

*Runetochar* copies one rune at *r* to at most **UTFmax** characters starting at *s* and returns the number of characters copied. **UTFmax**, defined as **3** in **\<libc.h\>**, is the maximum number of bytes required to represent a rune.

*Chartorune* copies at most **UTFmax** characters starting at *s* to one rune at *r* and returns the number of characters copied. If the characters are not exactly in UTF format, *chartorune* will convert to 0x80 and return 1.

*Runelen* returns the number of characters required to convert *r* into UTF.

*Fullrune* returns 1 if the string *s* of length *n* is long enough to be decoded by *chartorune* and 0 otherwise. This does not guarantee that the string contains a legal UTF encoding. This routine is used by programs that obtain input a character at a time and need to know when a full rune has arrived.

The following routines are analogous to the corresponding string routines with **utf** substituted for **str** and **rune** substituted for **chr**.

*Utflen* returns the number of runes that are represented by the UTF string *s*.

*Utfrune* (*utfrrune*) returns a pointer to the first (last) occurrence of rune *c* in the UTF string *s*, or 0 if *c* does not occur in the string. The NUL character terminating a string is considered to be part of the string *s*.

*Utfutf* returns a pointer to the first occurrence of the UTF string *s2* as a UTF substring of *s1*, or 0 if there is none. If *s2* is the null string, *utfutf* returns *s1*.

## SEE ALSO

[*utf*(5g)](/utf/5g.md)
