---
name: "isprint"
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/isprint"
---

# isprint(3)

printing character test (space character inclusive)

## NAME

**isprint**, **isprint\_l** – printing character test (space character inclusive)

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*int*\

**isprint**(*int c*);

*int*\

**isprint\_l**(*int c*, *locale\_t loc*);

## DESCRIPTION

The **isprint**() and **isprint\_l**() functions test for any printing character, including space (‘ ’). The value of the argument must be representable as an *unsigned char* or the value of EOF.

In the ASCII character set, this includes the following characters (with their numeric values shown in octal):

| | | | | |
| --- | --- | --- | --- | --- |
| 040 sp | 041 \`\`!'' | 042 \`\`"'' | 043 \`\`#'' | 044 \`\`$'' |
| 045 \`\`%'' | 046 \`\`&'' | 047 \`\`''' | 050 \`\`('' | 051 \`\`)'' |
| 052 \`\`\*'' | 053 \`\`+'' | 054 \`\`,'' | 055 \`\`-'' | 056 \`\`.'' |
| 057 \`\`/'' | 060 \`\`0'' | 061 \`\`1'' | 062 \`\`2'' | 063 \`\`3'' |
| 064 \`\`4'' | 065 \`\`5'' | 066 \`\`6'' | 067 \`\`7'' | 070 \`\`8'' |
| 071 \`\`9'' | 072 \`\`:'' | 073 \`\`;'' | 074 \`\`\<'' | 075 \`\`='' |
| 076 \`\`\>'' | 077 \`\`?'' | 100 \`\`@'' | 101 \`\`A'' | 102 \`\`B'' |
| 103 \`\`C'' | 104 \`\`D'' | 105 \`\`E'' | 106 \`\`F'' | 107 \`\`G'' |
| 110 \`\`H'' | 111 \`\`I'' | 112 \`\`J'' | 113 \`\`K'' | 114 \`\`L'' |
| 115 \`\`M'' | 116 \`\`N'' | 117 \`\`O'' | 120 \`\`P'' | 121 \`\`Q'' |
| 122 \`\`R'' | 123 \`\`S'' | 124 \`\`T'' | 125 \`\`U'' | 126 \`\`V'' |
| 127 \`\`W'' | 130 \`\`X'' | 131 \`\`Y'' | 132 \`\`Z'' | 133 \`\`\['' |
| 134 \`\`\\'' | 135 \`\`\]'' | 136 \`\`^'' | 137 \`\`\_'' | 140 \`\`\`'' |
| 141 \`\`a'' | 142 \`\`b'' | 143 \`\`c'' | 144 \`\`d'' | 145 \`\`e'' |
| 146 \`\`f'' | 147 \`\`g'' | 150 \`\`h'' | 151 \`\`i'' | 152 \`\`j'' |
| 153 \`\`k'' | 154 \`\`l'' | 155 \`\`m'' | 156 \`\`n'' | 157 \`\`o'' |
| 160 \`\`p'' | 161 \`\`q'' | 162 \`\`r'' | 163 \`\`s'' | 164 \`\`t'' |
| 165 \`\`u'' | 166 \`\`v'' | 167 \`\`w'' | 170 \`\`x'' | 171 \`\`y'' |
| 172 \`\`z'' | 173 \`\`{'' | 174 \`\`\|'' | 175 \`\`}'' | 176 \`\`~'' |

The **isprint\_l**() function takes an explicit locale argument, whereas the **isprint**() function uses the current global or per-thread locale.

## RETURN VALUES

The **isprint**() and **isprint\_l**() functions return zero if the character tests false and return non-zero if the character tests true.

## COMPATIBILITY

The 4.4BSD extension of accepting arguments outside of the range of the *unsigned char* type in locales with large character sets is considered obsolete and may not be supported in future releases. The **iswprint**() or **iswprint\_l**() function should be used instead.

## SEE ALSO

[ctype(3)](/ctype/3.md), [ctype\_l(3)](/ctype_l/3.md), [iswprint(3)](/iswprint/3.md), [iswprint\_l(3)](/iswprint_l/3.md), [xlocale(3)](/xlocale/3.md), [ascii(7)](/ascii/7.md)

## STANDARDS

The **isprint**() function conforms to ISO/IEC 9899:1990 (“ISO C90”).

## HISTORY

The **isprint**() function first appeared in Version 7 AT&T UNIX.
