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


Groups > comp.lang.c > #24456

Re: scanf()

From James Kuyper <jameskuyper@verizon.net>
Newsgroups comp.lang.c
Subject Re: scanf()
Date 2012-08-12 08:03 -0400
Organization A noiseless patient Spider
Message-ID <k0862c$pmg$1@dont-email.me> (permalink)
References (4 earlier) <13a134c9-5a13-4ad8-a59d-227aa68e94c3@googlegroups.com> <ln1ujduy1j.fsf@nuthaus.mib.org> <7337238e-c54d-496a-a29f-c96799218e81@googlegroups.com> <lnwr15t0i1.fsf@nuthaus.mib.org> <cfaea4d2-9a6b-483b-8439-e5e2106ea065@googlegroups.com>

Show all headers | View raw


On 08/12/2012 07:07 AM, Malcolm McLean wrote:
> בתאריך יום ראשון, 12 באוגוסט 2012 01:30:46 UTC+1, מאת Keith Thompson:
>> Malcolm McLean <malcolm.mclean5@btinternet.com> writes:
>>
>>> בתאריך יום שבת, 11 באוגוסט 2012 18:40:56 UTC+1, מאת Keith Thompson
>>>> Malcolm McLean <malcolm.mclean5@btinternet.com> writes:
>>
>>>> There are worse possibilities than wrong results.  If the input includes
>>>> something like "1.0e999999999", the behavior is undefined.
>>>>
>>
>>> But what is the program meant to do with such an input value? UB is 
>>> probably the best thing that can happen to it.
>>
>>
>> That's absurd.  Undefined behavior means that whatever the *worst*
>> thing is, it can happen, whether that's crashing the program, or
>> continuing to execute quietly with bad data, or reformatting your
>> hard drive.
>>
> It mean the implementation decides what the result of the operation will be.

Keep in mind that the simplest way for the implementor to deal with that
issue is to ignore it: the implementor may simply write the code be as
fast as possible while meeting it's requirements, of which there are
none that apply when the input is 1.0e9999999999. What happens when that
code deals with such inputs need not be anything that the implementor
bothered thinking about, it's just whatever happens when the assumptions
that went into the design of the code are violated. Plausible
possibilities (not having given any detailed thought to how the code is
likely to be implemented), include silently corrupting the contents of
memory locations that should not be affected by a call to sscanf() with
valid inputs, or getting stuck in an infinite loop.

> Of course the implementation is free to choose the worst option, like
> reformatting the hard drive. But normally it's choice between terminating,
> with an erro message, continuing with a corrupt value, or continuing with 
> a NaN or infinity. Not all platforms support option 3, which is the probable
> best choice. 

I would favor terminating with an error message over either of the other
two options you mention. I've heard people claim in similar discussion
in the past that there exist programs where it's more important that a
program keep running, regardless of how badly it is malfunctioning, than
that it halt. They say that in certain safety critical contexts, if the
program halts, someone will die. However, it seems to me that in
precisely those same circumstances, if the program malfunctions badly
enough, someone will die anyway, even if it never halts.
-- 
James Kuyper

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


Thread

scanf() Edward Rutherford <edward.p.rutherford79@REMOVETHIS.gmail.com> - 2012-08-06 20:58 +0000
  Re: scanf() Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-06 17:29 -0400
    Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-06 14:40 -0700
  Re: scanf() James Kuyper <jameskuyper@verizon.net> - 2012-08-06 17:39 -0400
  Re: scanf() Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-08-06 22:49 +0100
    Re: scanf() Edward Rutherford <edward.p.rutherford79@REMOVETHIS.gmail.com> - 2012-08-07 18:37 +0000
      Re: scanf() James Kuyper <jameskuyper@verizon.net> - 2012-08-07 15:01 -0400
      Re: scanf() Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-07 15:03 -0400
      Re: scanf() Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-08-07 20:51 +0100
      Re: scanf() John Bode <jfbode1029@gmail.com> - 2012-08-09 14:00 -0700
        Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-11 03:08 -0700
          Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-11 10:40 -0700
            Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-11 13:34 -0700
              Re: scanf() "BartC" <bc@freeuk.com> - 2012-08-11 23:04 +0100
              Re: scanf() James Kuyper <jameskuyper@verizon.net> - 2012-08-11 19:20 -0400
              Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-11 17:30 -0700
                Re: scanf() Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-11 20:41 -0400
                Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-11 18:13 -0700
                Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-11 18:16 -0700
                Re: scanf() Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-11 21:32 -0400
                Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-12 04:07 -0700
                Re: scanf() James Kuyper <jameskuyper@verizon.net> - 2012-08-12 08:03 -0400
                Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-12 06:41 -0700
                Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-12 13:39 -0700
                Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-12 14:20 -0700
                Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-12 16:33 -0700
                Re: scanf() "Heinrich Wolf" <invalid@invalid.invalid> - 2012-08-13 12:22 +0200
                Re: scanf() Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2012-09-05 00:13 +0300
                Re: scanf() Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 14:18 -0700
                Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-09-07 15:02 -0700
                Re: scanf() Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 17:25 -0700
                Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-09-07 18:35 -0700
              Re: scanf() Seungbeom Kim <musiphil@bawi.org> - 2012-08-12 21:05 -0700
        Re: scanf() Robert Wessel <robertwessel2@yahoo.com> - 2012-08-11 17:37 -0500

csiph-web