Thread (1 message) 1 message, 1 author, 2016-02-18

Re: strlen man-page misinformation

From: walter harms <hidden>
Date: 2016-02-18 15:42:50

Possibly related (same subject, not in this thread)


Am 18.02.2016 14:12, schrieb Michael Kerrisk (man-pages):
Hello Alan,

On 02/03/2016 06:25 PM, Alan Aversa wrote:
quoted
Hello,

The 2015-08-08 strlen man-page is incorrect. Here's a diff:

    --- a/man3/strlen.3
    +++ b/man3/strlen.3
    @@ -45,7 +45,7 @@ excluding the terminating null byte (\(aq\\0\(aq).
     .SH RETURN VALUE
     The
     .BR strlen ()
    -function returns the number of bytes in the string
    +function returns the number of *characters* in the string that
    precede the terminating null character
I went for a simpler change: s/bytes/characters/

For my understanding this is wrong. 1 character may be represented by 2 or more bytes (utf8).
see this example, the string (test) is 3 characters long and takes 6 bytes space.

did i miss something ? did the specification of character change ?

re,
 wh

#include <stdio.h>
#include <string.h>

int main()
{
        char *test="ÖÄÜ";
        int i;
        int len=strlen(test);
        printf("strlen=%d\n",len);

        for(i=0;i<len;i++)
                printf("%02x\n",(unsigned char)*(test+i));

        return 0;
}



output:
strlen=6
c3
96
c3
84
c3
9c


quoted
     .IR s .
     .SH ATTRIBUTES
     For an explanation of the terms used in this section, see
    @@ -60,7 +60,7 @@ T{
     T}     Thread safety   MT-Safe
     .TE
     .SH CONFORMING TO
    -POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
    +POSIX.1-2001, POSIX.1-2008, C89, C99, C11, SVr4, 4.3BSD.
Fixed.
quoted
     .SH SEE ALSO
     .BR string (3),
     .BR strnlen (3),

Page 392 (PDF p. 390, §7.24.6.3) of the C11 standard
<http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf> says:

    The *strlen* function returns the number of characters that precede
    the terminating null character.
Thanks for the report. Interesting, POSIX.1 still uses the term "bytes"
the spec.

Cheers,

Michael
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help