diff options
Diffstat (limited to 'man3/mbstowcs.3')
-rw-r--r-- | man3/mbstowcs.3 | 42 |
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 |