summaryrefslogtreecommitdiffstats
path: root/man3/mbstowcs.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/mbstowcs.3')
-rw-r--r--man3/mbstowcs.342
1 files changed, 21 insertions, 21 deletions
diff --git a/man3/mbstowcs.3 b/man3/mbstowcs.3
index 8337cb1bd..19651ea57 100644
--- a/man3/mbstowcs.3
+++ b/man3/mbstowcs.3
@@ -137,7 +137,7 @@ $ ./t_mbstowcs de_DE.UTF\-8 Grüße!
Length of source string (excluding terminator):
8 bytes
6 multibyte characters
-
+\&
Wide character string is: Grüße! (6 characters)
G alpha upper
r alpha lower
@@ -157,81 +157,81 @@ Wide character string is: Grüße! (6 characters)
#include <string.h>
#include <wchar.h>
#include <wctype.h>
-
+\&
int
main(int argc, char *argv[])
{
size_t mbslen; /* Number of multibyte characters in source */
wchar_t *wcs; /* Pointer to converted wide character string */
-
+\&
if (argc < 3) {
fprintf(stderr, "Usage: %s <locale> <string>\en", argv[0]);
exit(EXIT_FAILURE);
}
-
+\&
/* Apply the specified locale. */
-
+\&
if (setlocale(LC_ALL, argv[1]) == NULL) {
perror("setlocale");
exit(EXIT_FAILURE);
}
-
+\&
/* Calculate the length required to hold argv[2] converted to
a wide character string. */
-
+\&
mbslen = mbstowcs(NULL, argv[2], 0);
if (mbslen == (size_t) \-1) {
perror("mbstowcs");
exit(EXIT_FAILURE);
}
-
+\&
/* Describe the source string to the user. */
-
+\&
printf("Length of source string (excluding terminator):\en");
printf(" %zu bytes\en", strlen(argv[2]));
printf(" %zu multibyte characters\en\en", mbslen);
-
+\&
/* Allocate wide character string of the desired size. Add 1
to allow for terminating null wide character (L\[aq]\e0\[aq]). */
-
+\&
wcs = calloc(mbslen + 1, sizeof(*wcs));
if (wcs == NULL) {
perror("calloc");
exit(EXIT_FAILURE);
}
-
+\&
/* Convert the multibyte character string in argv[2] to a
wide character string. */
-
+\&
if (mbstowcs(wcs, argv[2], mbslen + 1) == (size_t) \-1) {
perror("mbstowcs");
exit(EXIT_FAILURE);
}
-
+\&
printf("Wide character string is: %ls (%zu characters)\en",
wcs, mbslen);
-
+\&
/* Now do some inspection of the classes of the characters in
the wide character string. */
-
+\&
for (wchar_t *wp = wcs; *wp != 0; wp++) {
printf(" %lc ", (wint_t) *wp);
-
+\&
if (!iswalpha(*wp))
printf("!");
printf("alpha ");
-
+\&
if (iswalpha(*wp)) {
if (iswupper(*wp))
printf("upper ");
-
+\&
if (iswlower(*wp))
printf("lower ");
}
-
+\&
putchar(\[aq]\en\[aq]);
}
-
+\&
exit(EXIT_SUCCESS);
}
.EE