iswprint

Header: <wctype.h>

Checks if the given wide character can be printed, i.e. it is either a number (0123456789), an uppercase letter (ABCDEFGHIJKLMNOPQRSTUVWXYZ), a lowercase letter (abcdefghijklmnopqrstuvwxyz), a punctuation character (!"#$%&’()*+,-./:;<=>?@[]^_`{!}~), space or any printable character specific to the current C locale.

# Declarations

int iswprint( wint_t ch );

(since C95)

# Parameters

# Return value

Non-zero value if the wide character can be printed, zero otherwise.

# Notes

ISO 30112 specifies which Unicode characters are included in POSIX print category.

# Example

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
 
int main(void)
{
    wchar_t c = L'\u2002'; // Unicode character 'EN SPACE'
    printf("in the default locale, iswprint(%#x) = %d\n", c, !!iswprint(c));
    setlocale(LC_ALL, "en_US.utf8");
    printf("in Unicode locale, iswprint(%#x) = %d\n", c, !!iswprint(c));
    wchar_t c2 = L'\x82'; // break permitted
    printf("in Unicode locale, iswprint(%#x) = %d\n", c2, !!iswprint(c2));
}

# See also