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


Groups > comp.lang.c++ > #83694

Re: getline() problem

From Andrey Tarasevich <andreytarasevich@hotmail.com>
Newsgroups comp.lang.c++
Subject Re: getline() problem
Date 2022-04-23 17:15 -0700
Organization A noiseless patient Spider
Message-ID <t424qu$kkf$1@dont-email.me> (permalink)
References (1 earlier) <t41cbb$qfn$1@dont-email.me> <t41dmo$35p5k$1@portraits.wsisiz.edu.pl> <t41er4$35r34$1@portraits.wsisiz.edu.pl> <t41s2g$1lum$1@gioia.aioe.org> <30821cca-aba2-4df3-9109-28f302fd1e26n@googlegroups.com>

Show all headers | View raw


On 4/23/2022 4:49 PM, Malcolm McLean wrote:
> On Saturday, 23 April 2022 at 22:46:10 UTC+1, Montmorency wrote:
>> On 4/23/2022 10:59 AM, Jivanmukta wrote:
>>>
>>> Sorry my mistake: I opened the file in VSCode and now I see that the
>>> file contains NUL bytes.
>>> How to read in C++ line of text finished with newline and containing NUL
>>> bytes?
>> Zero bytes have no special meaning in stream I/O, neither in binary nor
>> in text. There's no need to do anything special. So, again, I suspect
>> that everything is working properly in your case, at least with regard
>> to I/O. Whatever "problems" you perceive are either debugger illusions
>> or your own problems in post-processing.
>>
> Nul bytes will break most text-based reading functions, because they return
> text as C strings, and C strings are Nul-terminated. 

I don't know what "text-based reading functions" you are talking about 
here. C standard library functions are rather clearly and strictly 
specified: they read all characters/any characters until some 
stop-condition is met. Functions that treat input characters as "text" 
do not provide any special treatment to null characters read from the 
input stream. It is not part of their stop-condition. If you know a 
standard "text-based" I/O function with special treatment for null 
character - let's hear about it. Be specific. Provide an example.

And no, these functions don't "return strings". Nowhere in the standard 
it is stated that way. What they really do is they "read characters into 
an array". They simply fill recipient buffers in accordance with their 
specification. For example, format `%s` in `fscanf` will null-terminate 
its recipient buffer, but it still does not prohibit this buffer from 
having an extra null character in the middle. If that's the case, the 
resultant buffer as a whole won't be a C-string. But it is not a problem 
at all as far as `fscanf` is concerned.

So, it is not clear what "return strings" you are talking about. C-style 
I/O functions do not "return strings". They fill character arrays. What 
you do with these arrays afterwards is your responsibility. Whatever 
mistakes you make are entirely yours.

-- 
Best regards,
Andrey Tarasevich

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


Thread

getline() problem Jivanmukta <jivanmukta@poczta.onet.pl> - 2022-04-23 19:07 +0200
  Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-23 10:17 -0700
    Re: getline() problem Jivanmukta <jivanmukta@poczta.onet.pl> - 2022-04-23 19:40 +0200
      Re: getline() problem Jivanmukta <jivanmukta@poczta.onet.pl> - 2022-04-23 19:59 +0200
        Re: getline() problem Paavo Helde <eesnimi@osa.pri.ee> - 2022-04-23 21:47 +0300
          Re: getline() problem Juha Nieminen <nospam@thanks.invalid> - 2022-04-25 06:00 +0000
            Re: getline() problem Öö Tiib <ootiib@hot.ee> - 2022-04-25 00:12 -0700
            Re: getline() problem Paavo Helde <eesnimi@osa.pri.ee> - 2022-04-25 11:40 +0300
            Re: getline() problem James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-04-25 11:37 -0400
              Re: getline() problem Vir Campestris <vir.campestris@invalid.invalid> - 2022-04-25 16:54 +0100
                Re: getline() problem James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-04-25 12:29 -0400
                Re: getline() problem scott@slp53.sl.home (Scott Lurndal) - 2022-04-25 17:29 +0000
                Re: getline() problem Manfred <noname@add.invalid> - 2022-04-25 20:17 +0200
                Re: getline() problem Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-04-25 10:19 -0700
                Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-25 10:41 -0700
                Re: getline() problem Paavo Helde <eesnimi@osa.pri.ee> - 2022-04-25 21:58 +0300
              Re: getline() problem scott@slp53.sl.home (Scott Lurndal) - 2022-04-25 15:56 +0000
                Re: getline() problem James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-04-25 13:12 -0400
                Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-25 11:03 -0700
                Re: getline() problem scott@slp53.sl.home (Scott Lurndal) - 2022-04-25 19:05 +0000
                Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-25 12:48 -0700
                Re: getline() problem Ben <ben.usenet@bsb.me.uk> - 2022-04-25 21:46 +0100
                Re: getline() problem Juha Nieminen <nospam@thanks.invalid> - 2022-04-26 05:43 +0000
                Re: getline() problem David Brown <david.brown@hesbynett.no> - 2022-04-26 09:36 +0200
                Re: getline() problem Juha Nieminen <nospam@thanks.invalid> - 2022-04-26 09:18 +0000
                Re: getline() problem Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-04-26 02:47 -0700
                Re: getline() problem Juha Nieminen <nospam@thanks.invalid> - 2022-04-26 11:06 +0000
                Re: getline() problem David Brown <david.brown@hesbynett.no> - 2022-04-26 15:52 +0200
                Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-26 07:04 -0700
                Re: getline() problem Manfred <noname@add.invalid> - 2022-04-26 16:49 +0200
                Re: getline() problem James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-04-26 12:01 -0400
                Re: getline() problem James Kuyper <jameskuyper@alumni.caltech.edu> - 2022-04-26 11:49 -0400
                Re: getline() problem Manfred <noname@add.invalid> - 2022-04-25 20:23 +0200
            Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-25 10:33 -0700
              Re: getline() problem "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2022-04-25 10:52 -0700
                Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-25 11:08 -0700
                Re: getline() problem "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2022-04-25 21:18 -0700
                Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-25 22:04 -0700
              Re: getline() problem Paavo Helde <eesnimi@osa.pri.ee> - 2022-04-25 22:06 +0300
                Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-25 13:02 -0700
        Re: getline() problem Barry Schwarz <schwarzb@delq.com> - 2022-04-23 12:54 -0700
        Re: getline() problem Montmorency <none@none.com> - 2022-04-23 14:45 -0700
          Re: getline() problem Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-04-23 16:49 -0700
            Re: getline() problem Ben <ben.usenet@bsb.me.uk> - 2022-04-24 01:04 +0100
              Re: getline() problem Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-04-23 18:24 -0700
                Re: getline() problem Ben <ben.usenet@bsb.me.uk> - 2022-04-24 03:16 +0100
                Re: getline() problem Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-04-24 22:51 -0700
                Re: getline() problem Ben <ben.usenet@bsb.me.uk> - 2022-04-25 11:07 +0100
            Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-23 17:15 -0700
              Re: getline() problem Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-04-23 18:23 -0700
          Re: getline() problem Jivanmukta <jivanmukta@poczta.onet.pl> - 2022-04-24 05:28 +0200
  Re: getline() problem Jivanmukta <jivanmukta@poczta.onet.pl> - 2022-04-25 12:41 +0200
    Re: getline() problem Paavo Helde <eesnimi@osa.pri.ee> - 2022-04-25 14:33 +0300
    Re: getline() problem Jivanmukta <jivanmukta@poczta.onet.pl> - 2022-04-25 18:53 +0200
      Re: getline() problem Paavo Helde <eesnimi@osa.pri.ee> - 2022-04-25 22:08 +0300
        Re: getline() problem Jivanmukta <jivanmukta@poczta.onet.pl> - 2022-04-26 09:01 +0200
          Re: getline() problem Paavo Helde <eesnimi@osa.pri.ee> - 2022-04-26 11:15 +0300

csiph-web