wchar.h.0p (12630B)
- '\" et
- .TH wchar.h "0P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
- .\"
- .SH PROLOG
- This manual page is part of the POSIX Programmer's Manual.
- The Linux implementation of this interface may differ (consult
- the corresponding Linux manual page for details of Linux behavior),
- or the interface may not be implemented on Linux.
- .\"
- .SH NAME
- wchar.h
- \(em wide-character handling
- .SH SYNOPSIS
- .LP
- .nf
- #include <wchar.h>
- .fi
- .SH DESCRIPTION
- Some of the functionality described on this reference page extends the
- ISO\ C standard. Applications shall define the appropriate feature test macro
- (see the System Interfaces volume of POSIX.1\(hy2017,
- .IR "Section 2.2" ", " "The Compilation Environment")
- to enable the visibility of these symbols in this header.
- .P
- The
- .IR <wchar.h>
- header shall define the following types:
- .IP "\fBFILE\fP" 12
- As described in
- .IR <stdio.h> .
- .IP "\fBlocale_t\fP" 12
- As described in
- .IR <locale.h> .
- .IP "\fBmbstate_t\fP" 12
- An object type other than an array type that can hold the conversion
- state information necessary to convert between sequences of (possibly
- multi-byte) characters and wide characters.
- If a codeset is being used such that an
- .BR mbstate_t
- needs to preserve more than two levels of reserved state, the
- results are unspecified.
- .IP "\fBsize_t\fP" 12
- As described in
- .IR <stddef.h> .
- .IP "\fBva_list\fP" 12
- As described in
- .IR <stdarg.h> .
- .IP "\fBwchar_t\fP" 12
- As described in
- .IR <stddef.h> .
- .IP "\fBwctype_t\fP" 12
- A scalar type of a data object that can hold values which represent
- locale-specific character classification.
- .IP "\fBwint_t\fP" 12
- An integer type capable of storing any valid value of
- .BR wchar_t
- or WEOF.
- .P
- The tag
- .BR tm
- shall be declared as naming an incomplete structure type, the contents
- of which are described in the
- .IR <time.h>
- header.
- .P
- The implementation shall support one or more programming environments
- in which the width of
- .BR wint_t
- is no greater than the width of type
- .BR long .
- The names of these programming environments can be obtained using the
- \fIconfstr\fR()
- function or the
- .IR getconf
- utility.
- .P
- The
- .IR <wchar.h>
- header shall define the following macros:
- .IP WCHAR_MAX 12
- As described in
- .IR <stdint.h> .
- .IP WCHAR_MIN 12
- As described in
- .IR <stdint.h> .
- .IP WEOF 12
- Constant expression of type
- .BR wint_t
- that is returned by several WP functions to indicate end-of-file.
- .IP NULL 12
- As described in
- .IR <stddef.h> .
- .P
- Inclusion of the
- .IR <wchar.h>
- header may make visible all symbols from the headers
- .IR <ctype.h> ,
- .IR <string.h> ,
- .IR <stdarg.h> ,
- .IR <stddef.h> ,
- .IR <stdio.h> ,
- .IR <stdlib.h> ,
- and
- .IR <time.h> .
- .P
- The following shall be declared as functions and may also be defined
- as macros. Function prototypes shall be provided for use with ISO\ C standard
- compilers. Arguments to functions in this list can point to arrays
- containing
- .BR wchar_t
- values that do not correspond to members of the character set of the
- current locale. Such values shall be processed according to the
- specified semantics, unless otherwise stated.
- .sp
- .RS 4
- .nf
- wint_t btowc(int);
- wint_t fgetwc(FILE *);
- wchar_t *fgetws(wchar_t *restrict, int, FILE *restrict);
- wint_t fputwc(wchar_t, FILE *);
- int fputws(const wchar_t *restrict, FILE *restrict);
- int fwide(FILE *, int);
- int fwprintf(FILE *restrict, const wchar_t *restrict, ...);
- int fwscanf(FILE *restrict, const wchar_t *restrict, ...);
- wint_t getwc(FILE *);
- wint_t getwchar(void);
- int iswalnum(wint_t);
- int iswalpha(wint_t);
- int iswcntrl(wint_t);
- int iswctype(wint_t, wctype_t);
- int iswdigit(wint_t);
- int iswgraph(wint_t);
- int iswlower(wint_t);
- int iswprint(wint_t);
- int iswpunct(wint_t);
- int iswspace(wint_t);
- int iswupper(wint_t);
- int iswxdigit(wint_t);
- size_t mbrlen(const char *restrict, size_t, mbstate_t *restrict);
- size_t mbrtowc(wchar_t *restrict, const char *restrict, size_t,
- mbstate_t *restrict);
- int mbsinit(const mbstate_t *);
- size_t mbsnrtowcs(wchar_t *restrict, const char **restrict,
- size_t, size_t, mbstate_t *restrict);
- size_t mbsrtowcs(wchar_t *restrict, const char **restrict, size_t,
- mbstate_t *restrict);
- FILE *open_wmemstream(wchar_t **, size_t *);
- wint_t putwc(wchar_t, FILE *);
- wint_t putwchar(wchar_t);
- int swprintf(wchar_t *restrict, size_t,
- const wchar_t *restrict, ...);
- int swscanf(const wchar_t *restrict,
- const wchar_t *restrict, ...);
- wint_t towlower(wint_t);
- wint_t towupper(wint_t);
- wint_t ungetwc(wint_t, FILE *);
- int vfwprintf(FILE *restrict, const wchar_t *restrict, va_list);
- int vfwscanf(FILE *restrict, const wchar_t *restrict, va_list);
- int vswprintf(wchar_t *restrict, size_t,
- const wchar_t *restrict, va_list);
- int vswscanf(const wchar_t *restrict, const wchar_t *restrict,
- va_list);
- int vwprintf(const wchar_t *restrict, va_list);
- int vwscanf(const wchar_t *restrict, va_list);
- wchar_t *wcpcpy(wchar_t *restrict, const wchar_t *restrict);
- wchar_t *wcpncpy(wchar_t *restrict, const wchar_t *restrict, size_t);
- size_t wcrtomb(char *restrict, wchar_t, mbstate_t *restrict);
- int wcscasecmp(const wchar_t *, const wchar_t *);
- int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
- wchar_t *wcscat(wchar_t *restrict, const wchar_t *restrict);
- wchar_t *wcschr(const wchar_t *, wchar_t);
- int wcscmp(const wchar_t *, const wchar_t *);
- int wcscoll(const wchar_t *, const wchar_t *);
- int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
- wchar_t *wcscpy(wchar_t *restrict, const wchar_t *restrict);
- size_t wcscspn(const wchar_t *, const wchar_t *);
- wchar_t *wcsdup(const wchar_t *);
- size_t wcsftime(wchar_t *restrict, size_t,
- const wchar_t *restrict, const struct tm *restrict);
- size_t wcslen(const wchar_t *);
- int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
- int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t,
- locale_t);
- wchar_t *wcsncat(wchar_t *restrict, const wchar_t *restrict, size_t);
- int wcsncmp(const wchar_t *, const wchar_t *, size_t);
- wchar_t *wcsncpy(wchar_t *restrict, const wchar_t *restrict, size_t);
- size_t wcsnlen(const wchar_t *, size_t);
- size_t wcsnrtombs(char *restrict, const wchar_t **restrict, size_t,
- size_t, mbstate_t *restrict);
- wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
- wchar_t *wcsrchr(const wchar_t *, wchar_t);
- size_t wcsrtombs(char *restrict, const wchar_t **restrict,
- size_t, mbstate_t *restrict);
- size_t wcsspn(const wchar_t *, const wchar_t *);
- wchar_t *wcsstr(const wchar_t *restrict, const wchar_t *restrict);
- double wcstod(const wchar_t *restrict, wchar_t **restrict);
- float wcstof(const wchar_t *restrict, wchar_t **restrict);
- wchar_t *wcstok(wchar_t *restrict, const wchar_t *restrict,
- wchar_t **restrict);
- long wcstol(const wchar_t *restrict, wchar_t **restrict, int);
- long double wcstold(const wchar_t *restrict, wchar_t **restrict);
- long long wcstoll(const wchar_t *restrict, wchar_t **restrict, int);
- unsigned long wcstoul(const wchar_t *restrict, wchar_t **restrict, int);
- unsigned long long
- wcstoull(const wchar_t *restrict, wchar_t **restrict, int);
- int wcswidth(const wchar_t *, size_t);
- size_t wcsxfrm(wchar_t *restrict, const wchar_t *restrict, size_t);
- size_t wcsxfrm_l(wchar_t *restrict, const wchar_t *restrict,
- size_t, locale_t);
- int wctob(wint_t);
- wctype_t wctype(const char *);
- int wcwidth(wchar_t);
- wchar_t *wmemchr(const wchar_t *, wchar_t, size_t);
- int wmemcmp(const wchar_t *, const wchar_t *, size_t);
- wchar_t *wmemcpy(wchar_t *restrict, const wchar_t *restrict, size_t);
- wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t);
- wchar_t *wmemset(wchar_t *, wchar_t, size_t);
- int wprintf(const wchar_t *restrict, ...);
- int wscanf(const wchar_t *restrict, ...);
- .fi
- .P
- .RE
- .LP
- .IR "The following sections are informative."
- .SH "APPLICATION USAGE"
- The
- \fIiswblank\fR()
- function was a late addition to the ISO\ C standard and was introduced at the same
- time as the ISO\ C standard introduced
- .IR <wctype.h> ,
- which contains all of the
- .IR isw* (\|)
- functions. The Open Group Base Specifications had previously aligned
- with the MSE working draft and had introduced the rest of the
- .IR isw* (\|)
- functions into
- .IR <wchar.h> .
- For backwards-compatibility, the original set of
- .IR isw* (\|)
- functions, without
- \fIiswblank\fR(),
- are permitted (as part of the XSI option) in
- .IR <wchar.h> .
- For maximum portability, applications should include
- .IR <wctype.h>
- in order to obtain declarations for the
- .IR isw* (\|)
- functions. This compatibility has been made obsolescent.
- .SH RATIONALE
- In the ISO\ C standard, the symbols referenced as XSI extensions are in
- .IR <wctype.h> .
- Their presence here is thus an extension.
- .SH "FUTURE DIRECTIONS"
- None.
- .SH "SEE ALSO"
- .IR "\fB<ctype.h>\fP",
- .IR "\fB<locale.h>\fP",
- .IR "\fB<stdarg.h>\fP",
- .IR "\fB<stddef.h>\fP",
- .IR "\fB<stdint.h>\fP",
- .IR "\fB<stdio.h>\fP",
- .IR "\fB<stdlib.h>\fP",
- .IR "\fB<string.h>\fP",
- .IR "\fB<time.h>\fP",
- .IR "\fB<wctype.h>\fP"
- .P
- .ad l
- The System Interfaces volume of POSIX.1\(hy2017,
- .IR "Section 2.2" ", " "The Compilation Environment",
- .IR "\fIbtowc\fR\^(\|)",
- .IR "\fIconfstr\fR\^(\|)",
- .IR "\fIfgetwc\fR\^(\|)",
- .IR "\fIfgetws\fR\^(\|)",
- .IR "\fIfputwc\fR\^(\|)",
- .IR "\fIfputws\fR\^(\|)",
- .IR "\fIfwide\fR\^(\|)",
- .IR "\fIfwprintf\fR\^(\|)",
- .IR "\fIfwscanf\fR\^(\|)",
- .IR "\fIgetwc\fR\^(\|)",
- .IR "\fIgetwchar\fR\^(\|)",
- .IR "\fIiswalnum\fR\^(\|)",
- .IR "\fIiswalpha\fR\^(\|)",
- .IR "\fIiswcntrl\fR\^(\|)",
- .IR "\fIiswctype\fR\^(\|)",
- .IR "\fIiswdigit\fR\^(\|)",
- .IR "\fIiswgraph\fR\^(\|)",
- .IR "\fIiswlower\fR\^(\|)",
- .IR "\fIiswprint\fR\^(\|)",
- .IR "\fIiswpunct\fR\^(\|)",
- .IR "\fIiswspace\fR\^(\|)",
- .IR "\fIiswupper\fR\^(\|)",
- .IR "\fIiswxdigit\fR\^(\|)",
- .IR "\fImbrlen\fR\^(\|)",
- .IR "\fImbrtowc\fR\^(\|)",
- .IR "\fImbsinit\fR\^(\|)",
- .IR "\fImbsrtowcs\fR\^(\|)",
- .IR "\fIopen_memstream\fR\^(\|)",
- .IR "\fIputwc\fR\^(\|)",
- .IR "\fIputwchar\fR\^(\|)",
- .IR "\fItowlower\fR\^(\|)",
- .IR "\fItowupper\fR\^(\|)",
- .IR "\fIungetwc\fR\^(\|)",
- .IR "\fIvfwprintf\fR\^(\|)",
- .IR "\fIvfwscanf\fR\^(\|)",
- .IR "\fIwcrtomb\fR\^(\|)",
- .IR "\fIwcscasecmp\fR\^(\|)",
- .IR "\fIwcscat\fR\^(\|)",
- .IR "\fIwcschr\fR\^(\|)",
- .IR "\fIwcscmp\fR\^(\|)",
- .IR "\fIwcscoll\fR\^(\|)",
- .IR "\fIwcscpy\fR\^(\|)",
- .IR "\fIwcscspn\fR\^(\|)",
- .IR "\fIwcsdup\fR\^(\|)",
- .IR "\fIwcsftime\fR\^(\|)",
- .IR "\fIwcslen\fR\^(\|)",
- .IR "\fIwcsncat\fR\^(\|)",
- .IR "\fIwcsncmp\fR\^(\|)",
- .IR "\fIwcsncpy\fR\^(\|)",
- .IR "\fIwcspbrk\fR\^(\|)",
- .IR "\fIwcsrchr\fR\^(\|)",
- .IR "\fIwcsrtombs\fR\^(\|)",
- .IR "\fIwcsspn\fR\^(\|)",
- .IR "\fIwcsstr\fR\^(\|)",
- .IR "\fIwcstod\fR\^(\|)",
- .IR "\fIwcstok\fR\^(\|)",
- .IR "\fIwcstol\fR\^(\|)",
- .IR "\fIwcstoul\fR\^(\|)",
- .IR "\fIwcswidth\fR\^(\|)",
- .IR "\fIwcsxfrm\fR\^(\|)",
- .IR "\fIwctob\fR\^(\|)",
- .IR "\fIwctype\fR\^(\|)",
- .IR "\fIwcwidth\fR\^(\|)",
- .IR "\fIwmemchr\fR\^(\|)",
- .IR "\fIwmemcmp\fR\^(\|)",
- .IR "\fIwmemcpy\fR\^(\|)",
- .IR "\fIwmemmove\fR\^(\|)",
- .IR "\fIwmemset\fR\^(\|)"
- .ad b
- .P
- The Shell and Utilities volume of POSIX.1\(hy2017,
- .IR "\fIgetconf\fR\^"
- .\"
- .SH COPYRIGHT
- Portions of this text are reprinted and reproduced in electronic form
- from IEEE Std 1003.1-2017, Standard for Information Technology
- -- Portable Operating System Interface (POSIX), The Open Group Base
- Specifications Issue 7, 2018 Edition,
- Copyright (C) 2018 by the Institute of
- Electrical and Electronics Engineers, Inc and The Open Group.
- In the event of any discrepancy between this version and the original IEEE and
- The Open Group Standard, the original IEEE and The Open Group Standard
- is the referee document. The original Standard can be obtained online at
- http://www.opengroup.org/unix/online.html .
- .PP
- Any typographical or formatting errors that appear
- in this page are most likely
- to have been introduced during the conversion of the source files to
- man page format. To report such errors, see
- https://www.kernel.org/doc/man-pages/reporting_bugs.html .