Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #149174

Re: C String terminator

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: C String terminator
Date 2020-01-16 03:44 +0000
Organization A noiseless patient Spider
Message-ID <87h80wdpzk.fsf@bsb.me.uk> (permalink)
References (2 earlier) <qvnl2n$tu6$3@dont-email.me> <87eew0ikfe.fsf@nosuchdomain.example.com> <qvnr62$5ln$1@dont-email.me> <87ftggfarv.fsf@bsb.me.uk> <qvoh40$psd$1@dont-email.me>

Show all headers | View raw


T <T@invalid.invalid> writes:

> On 2020-01-15 17:30, Ben Bacarisse wrote:
>> T <T@invalid.invalid> writes:
<cut>
>>> In WinAPI, calls
>>>
>>> https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regsetvalueexw
>>>
>>> a "string literal" is annotated as:
>>>       const BYTE *lpData
>>>
>>> And the byte count of such is
>>>       DWORD      cbData
>>
>> This is not a string literal in any sense at all.  A string literal is a
>> lexical element in a C program text.  In the C "abstract machine" it
>> gives rise to an array in the resulting program, but even that need not
>> exist in the actual program as compiled.  There are no literals (string
>> or otherwise) in a running program.
>>
>> In fact lpData (in this call) points to arbitrary data.  It may point to
>> the start of a string or it may not.  It could be anything at all.
>
> And it doe have anything. in teh WinApi call in question it an be
> either a little endian DWORD of a little endian UTF16 array of words.

Corrected: "In the WinApi call in question it can be either a little
endian DWORD or a little endian UTF16 array of words".  If that is what
you meant, then no, but the reasons why are now way off topic.

More on topic is the fact that you are having a go at someone on that
list for not confusing strings and string literals, but you don't seem
to know what a string literal is.

>
>>
>>> Note that "*lpData" can be a little endian four byte
>>> DWORD cardial or a UTF16 array of WORDS.
>>
>> Hmm... don't know what you mean.  *lpData is an object of type BYTE.  It
>> can be the first byte of just about anything.  Maybe that's what you
>> mean.
>
> An array of bytes is the best way to look at it.
>
>>
>>> A "C" string (not a string literal) would be
>>>
>>> https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regqueryvalueexw
>>>
>>>      LPCWSTR lpValueName
>>
>> And this muddies the waters because a pointer to a WCHAR does really map
(corrected: "does not")
>> to anything in the C standard.  The closest match is a wide string, but
>> you've used "C string" to mean a character string up to now.
>
> ya, especially since it is little endian UTF16.  And the
> second byte is always a nul

No it isn't.

>>
>>> Are you able to see the difference between "const BYTE *lpData
>>> plus DWORD cbData" and "LPCWSTR lpValueName"?  One is
>>> a "String Literal" and the other one is "String".
>>
>> No.  One is a pointer to the first byte of arbitrary data, the second is
>> a pointer to the start of a wide string.
>
> Yes, sorry for the confusion.
>
>
>>> "LPCWSTR lpValueName" does not need to know the length of the string
>>> because it expects to see a nul at the end.
>>
>> It expects to see a two-byte zero WCHAR at the end.  "nul" is the name
>> of an ASCII character -- just one byte.
>
> With these WinAPI calls, you have to terminate the string with two
> \0's. This because the second byte in the UTF words
> is always a \0.

No, the terminator is, as I said, a zero WCHAR.  The notation \0 is
doubly confusing because it looks like a C escape, but in a C wide
string literal a single \0 denotes a zero of the right size (not that
you usually need to write one of course).

And no, the second byte is not always zero.

<cut>
-- 
Ben.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

C String terminator T <T@invalid.invalid> - 2020-01-14 09:22 -0800
  Re: C String terminator Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-01-14 09:32 -0800
    Re: C String terminator T <T@invalid.invalid> - 2020-01-14 09:43 -0800
      Re: C String terminator Bart <bc@freeuk.com> - 2020-01-14 17:53 +0000
        Re: C String terminator David Brown <david.brown@hesbynett.no> - 2020-01-14 20:17 +0100
          Re: C String terminator Bart <bc@freeuk.com> - 2020-01-14 20:01 +0000
      Re: C String terminator Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-01-14 09:57 -0800
        Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-14 11:37 -0800
          Re: C String terminator T <T@invalid.invalid> - 2020-01-15 09:02 -0800
            Re: C String terminator T <T@invalid.invalid> - 2020-01-15 09:38 -0800
              Re: C String terminator T <T@invalid.invalid> - 2020-01-15 09:53 -0800
        Re: C String terminator Manfred <noname@add.invalid> - 2020-01-14 20:48 +0100
    Re: C String terminator chad <cdalten@gmail.com> - 2020-01-15 05:43 -0800
      Re: C String terminator Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-01-15 07:12 -0800
      Re: C String terminator Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-15 15:35 +0000
        Re: C String terminator chad <cdalten@gmail.com> - 2020-01-19 06:20 -0800
    Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-15 10:52 -0800
      Re: C String terminator Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-01-15 12:52 -0800
        Re: C String terminator gazelle@shell.xmission.com (Kenny McCormack) - 2020-01-15 20:56 +0000
        Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 02:17 +0000
        Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-15 21:54 -0800
          Re: C String terminator fir <profesor.fir@gmail.com> - 2020-01-16 02:07 -0800
            Re: C String terminator Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-01-16 02:45 -0800
              Re: C String terminator Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2020-01-16 08:21 -0700
                Re: C String terminator Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-01-16 08:03 -0800
              Re: C String terminator John Bode <jfbode1029@gmail.com> - 2020-01-16 09:06 -0800
              Re: C String terminator James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-16 11:29 -0800
      Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 02:01 +0000
        Re: C String terminator James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-15 23:02 -0500
        Re: C String terminator David Brown <david.brown@hesbynett.no> - 2020-01-16 11:15 +0100
          Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 13:07 +0000
        Re: C String terminator Manfred <noname@add.invalid> - 2020-01-17 18:43 +0100
          Re: C String terminator Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-21 04:00 -0800
          Re: C String terminator James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-21 05:00 -0800
  Re: C String terminator Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2020-01-14 12:36 -0700
    Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-14 12:05 -0800
      Re: C String terminator Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2020-01-14 13:54 -0700
        Re: C String terminator James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-14 15:03 -0800
          Re: C String terminator Thiago Adams <thiago.adams@gmail.com> - 2020-01-15 04:55 -0800
            Re: C String terminator Guillaume <message@bottle.org> - 2020-01-15 20:49 +0100
              Re: C String terminator Thiago Adams <thiago.adams@gmail.com> - 2020-01-15 12:55 -0800
        Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-14 21:31 -0800
    Re: C String terminator T <T@invalid.invalid> - 2020-01-15 09:28 -0800
      Re: C String terminator T <T@invalid.invalid> - 2020-01-15 09:38 -0800
        Re: C String terminator Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2020-01-15 10:50 -0700
          Re: C String terminator T <T@invalid.invalid> - 2020-01-15 10:17 -0800
        Re: C String terminator T <T@invalid.invalid> - 2020-01-15 09:53 -0800
  Re: C String terminator Richard Damon <Richard@Damon-Family.org> - 2020-01-14 21:43 -0500
  Re: C String terminator "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-01-14 22:52 -0800
    Re: C String terminator "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-01-14 22:54 -0800
  Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-15 02:00 -0800
    Re: C String terminator gazelle@shell.xmission.com (Kenny McCormack) - 2020-01-15 10:47 +0000
      Re: C String terminator Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-01-15 03:02 -0800
    Re: C String terminator T <T@invalid.invalid> - 2020-01-15 10:19 -0800
      Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-15 11:33 -0800
        Re: C String terminator T <T@invalid.invalid> - 2020-01-15 12:03 -0800
          Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 01:30 +0000
            Re: C String terminator T <T@invalid.invalid> - 2020-01-15 18:17 -0800
              Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 03:44 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-15 20:33 -0800
          Re: C String terminator fir <profesor.fir@gmail.com> - 2020-01-16 02:26 -0800
  Re: C String terminator Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-15 15:11 +0000
    Re: C String terminator T <T@invalid.invalid> - 2020-01-15 09:32 -0800
      Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-15 10:47 -0800
        Re: C String terminator T <T@invalid.invalid> - 2020-01-15 10:58 -0800
          Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 01:39 +0000
            Re: C String terminator T <T@invalid.invalid> - 2020-01-15 18:27 -0800
              Re: C String terminator T <T@invalid.invalid> - 2020-01-15 19:03 -0800
              Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 03:28 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-15 19:33 -0800
                Re: C String terminator T <T@invalid.invalid> - 2020-01-15 19:38 -0800
                Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 13:31 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-16 09:09 -0800
                Re: C String terminator Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2020-01-16 10:27 -0700
                Re: C String terminator T <T@invalid.invalid> - 2020-01-16 10:54 -0800
                Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 20:59 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-16 14:11 -0800
                Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 20:17 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-16 14:14 -0800
                Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 23:45 +0000
                Yes, Ben makes house calls (Was: C String terminator) gazelle@shell.xmission.com (Kenny McCormack) - 2020-01-16 23:57 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-17 11:28 -0800
                Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-17 20:46 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-17 12:48 -0800
                Re: C String terminator T <T@invalid.invalid> - 2020-01-17 12:54 -0800
                Re: C String terminator Bart <bc@freeuk.com> - 2020-01-17 21:02 +0000
                Re: C String terminator Bart <bc@freeuk.com> - 2020-01-17 21:21 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-17 13:35 -0800
                Re: C String terminator T <T@invalid.invalid> - 2020-01-17 13:44 -0800
                Re: C String terminator fir <profesor.fir@gmail.com> - 2020-01-17 15:03 -0800
                Re: C String terminator fir <profesor.fir@gmail.com> - 2020-01-17 15:06 -0800
                Re: C String terminator Ike Naar <ike@sdf.lonestar.org> - 2020-01-18 07:30 +0000
                Re: C String terminator Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2020-01-17 16:06 -0500
                Re: C String terminator Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2020-01-17 16:23 -0500
                Re: C String terminator T <T@invalid.invalid> - 2020-01-17 13:37 -0800
                Re: C String terminator Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-21 04:10 -0800
                Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-21 10:41 -0800
                Re: C String terminator Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-01-17 01:55 -0800
                Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-17 09:52 -0800
                Re: C String terminator T <T@invalid.invalid> - 2020-01-17 11:29 -0800
                Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 18:21 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-16 10:50 -0800
                Re: C String terminator Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-01-16 20:50 +0000
                Re: C String terminator T <T@invalid.invalid> - 2020-01-16 14:17 -0800
  Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-15 09:59 -0800
  Re: C String terminator T <T@invalid.invalid> - 2020-01-15 10:15 -0800
  Re: C String terminator T <T@invalid.invalid> - 2020-01-18 21:42 -0800
    Re: C String terminator T <T@invalid.invalid> - 2020-01-19 22:13 -0800
  Re: C String terminator Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-21 19:49 +0100
  Re: C String terminator John Bode <jfbode1029@gmail.com> - 2020-01-21 15:33 -0800
    Re: C String terminator Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-21 23:19 -0800
    Re: C String terminator Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-22 08:39 +0100
      Re: C String terminator chad <cdalten@gmail.com> - 2020-01-22 06:59 -0800
        Re: C String terminator Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-22 18:44 +0100

csiph-web