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


Groups > comp.lang.c > #147638

Re: One works, the other doesn't?

Subject Re: One works, the other doesn't?
Newsgroups comp.lang.c
References (3 earlier) <35717f02-8402-418e-acd0-ceec084d15de@googlegroups.com> <bVgwF.21715$FR8.19478@fx45.iad> <4986f18b-f4db-4d07-ae8b-b5ecf71bbe7b@googlegroups.com> <3thwF.58753$VR.56155@fx39.iad> <qpssq3$3ee$4@dont-email.me>
From Bart <bc@freeuk.com>
Message-ID <5gnwF.62102$vc.59910@fx20.am4> (permalink)
Organization virginmedia.com
Date 2019-11-05 23:06 +0000

Show all headers | View raw


On 05/11/2019 22:24, David Brown wrote:
> On 05/11/2019 17:29, DFS wrote:
>> On 11/5/2019 11:04 AM, Malcolm McLean wrote:
>>> On Tuesday, 5 November 2019 15:52:48 UTC, DFS  wrote:
>>>> On 11/5/2019 10:45 AM, mark.bluemel@gmail.com wrote:
>>>>> On Tuesday, 5 November 2019 15:34:32 UTC, DFS  wrote:
>>>>>
>>>>>>        printf("%.4s remove %d 
>>>>>> dupes\n",elapsedtime(start),arrsize-cnt);
>>>>>
>>>>> "%.4s" is a (slightly unusual) format specifier for a string.
>>>>> It's a
>>>>> totally unsuitable format specifier for a double value, which I think
>>>>> is what elapsedtime() returns. I'd kind of expect it to fail, in some
>>>>> unpredictable manner, as the printf routine tries to treat a double as
>>>>> a pointer-to-char and disappears into some abyss or other.
>>>>
>>>>
>>>> Dude!  It's a format specifier for a double (elapsed time), but I
>>>> inadvertently dropped the f  (should be .4fs, where the s is short for
>>>> seconds).
>>>>
>>>> This was causing my program to fail, and I didn't look closely 
>>>> enough at
>>>> that line. Now I'm golden - I think.
>>>>
>>>> Thanks for spotting it!
>>>>
>>> If you use a good modern IDE, it will warn you when the format string
>>> and the arguments don't match.
>>
>>
>> I'm using geany and Tiny C Compiler (Windows).  Neither one catches it 
>> (I wouldn't expect Geany to).
>>
> 
> /Why/ are you using tcc?  If you were developing on a tiny or ancient 
> computer, I could understand it.  But gcc is a vastly better compiler, 
> especially during development.

gcc is a bit of a dog, especially with larger programs, or you are 
including some hefty headers.

You want something nippy during development. You can still run gcc with 
all its options every so often, or if stuck with some bug, or for 
production code to get the best performance.


>> But gcc (on MSYS2) does:
>>
>> $ gcc -Wall -o rand.exe random_strings_clc_final.c
>> random_strings_clc_final.c: In function ‘main’:
>> random_strings_clc_final.c:132:16: warning: format ‘%s’ expects 
>> argument of type ‘char *’, but argument 2 has type ‘double’ [-Wformat=]
>>    132 |     printf("%.4s remove %d 
>> dupes\n",elapsedtime(start),arrsize-cnt);
>>        |             ~~~^                    ~~~~~~~~~~~~~~~~~~
>>        |                |                    |
>>        |                char *               double
>>        |             %.4f
>>
>>
> 
Of course the real problem is C's old-fashioned printf system. Somehow 
mandating cumbersome tools to detect argument/format mismatches was seen 
as a better 'solution' than fixing the language.

And in many situations (like, all the ones where my "%?" idea won't 
work), the compiler can't detect the wrong format, and the program will 
give the wrong results, or crash.

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


Thread

One works, the other doesn't? DFS <nospam@dfs.com> - 2019-11-03 17:39 -0500
  Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-04 00:20 +0000
  Re: One works, the other doesn't? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-11-04 06:53 +0000
  Re: One works, the other doesn't? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-11-04 09:45 -0500
    Re: One works, the other doesn't? DFS <nospam@dfs.com> - 2019-11-05 10:34 -0500
      Re: One works, the other doesn't? mark.bluemel@gmail.com - 2019-11-05 07:45 -0800
        Re: One works, the other doesn't? DFS <nospam@dfs.com> - 2019-11-05 10:53 -0500
          Re: One works, the other doesn't? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-05 08:04 -0800
            Re: One works, the other doesn't? DFS <nospam@dfs.com> - 2019-11-05 11:29 -0500
              Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-05 23:24 +0100
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-05 23:06 +0000
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-06 12:31 +1300
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-05 23:43 +0000
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-06 12:54 +1300
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-06 01:35 +0000
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-06 15:16 +1300
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-06 11:11 +0000
                Re: One works, the other doesn't? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-06 01:59 -0800
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-06 11:35 +0100
                Re: One works, the other doesn't? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-06 08:57 -0800
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-07 07:24 +1300
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-06 22:59 +0100
                Re: One works, the other doesn't? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-06 14:37 -0800
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-07 00:58 +0100
                Re: One works, the other doesn't? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-07 02:08 -0800
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-07 15:43 +0100
                Re: One works, the other doesn't? Robert Wessel <robertwessel2@yahoo.com> - 2019-11-07 16:15 -0600
                Re: One works, the other doesn't? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-11-10 20:01 +0000
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-11 15:26 +1300
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-11 12:37 +0100
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-07 07:21 +1300
                Re: One works, the other doesn't? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-06 10:39 -0800
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-07 07:47 +1300
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-07 08:14 +1300
                Re: One works, the other doesn't? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-06 12:30 -0800
                Re: One works, the other doesn't? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-08 21:04 -0800
                Re: One works, the other doesn't? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2019-11-09 01:37 -0800
                Re: One works, the other doesn't? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2019-11-09 01:38 -0800
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-10 08:32 +1300
                Re: One works, the other doesn't? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-28 16:09 -0800
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-29 11:33 +0100
                Re: One works, the other doesn't? Öö Tiib <ootiib@hot.ee> - 2019-11-30 14:20 -0800
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-12-01 12:15 +1300
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-06 10:07 +0100
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-06 10:58 +0000
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-07 10:05 +0100
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-06 09:52 +0100
                Re: One works, the other doesn't? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2019-11-06 00:56 -0800
                Re: One works, the other doesn't? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2019-11-06 01:00 -0800
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-06 11:32 +0000
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-06 23:11 +0100
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-06 23:22 +0000
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-07 01:04 +0100
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-07 01:13 +0000
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-07 10:22 +0100
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-07 11:51 +0000
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-07 15:58 +0100
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-07 16:34 +0000
                Re: One works, the other doesn't? DFS <nospam@dfs.com> - 2019-11-07 12:40 -0500
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-07 17:57 +0000
                Re: One works, the other doesn't? Keith Thompson <kst-u@mib.org> - 2019-11-07 21:14 -0800
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-08 09:45 +0000
                Re: One works, the other doesn't? Keith Thompson <kst-u@mib.org> - 2019-11-08 09:56 -0800
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-08 19:47 +0000
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-09 09:14 +1300
                Re: One works, the other doesn't? Keith Thompson <kst-u@mib.org> - 2019-11-08 19:10 -0800
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-09 12:24 +0000
                Like an old married couple... (Was: One works, the other doesn't?) gazelle@shell.xmission.com (Kenny McCormack) - 2019-11-08 20:25 +0000
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-07 19:58 +0100
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-07 19:31 +0000
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-08 08:56 +1300
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-07 20:06 +0000
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-08 09:21 +1300
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-07 21:20 +0000
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-08 10:28 +1300
                Re: One works, the other doesn't? Bart <bc@freeuk.com> - 2019-11-07 22:35 +0000
                Re: One works, the other doesn't? Ian Collins <ian-news@hotmail.com> - 2019-11-09 09:22 +1300
                Re: One works, the other doesn't? jadill33@gmail.com - 2019-11-07 08:37 -0800
                Re: One works, the other doesn't? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-07 08:52 -0800
                Re: One works, the other doesn't? jadill33@gmail.com - 2019-11-07 09:52 -0800
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-07 20:04 +0100
                Re: One works, the other doesn't? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-08 19:50 -0800
            Re: One works, the other doesn't? Bonita Montero <Bonita.Montero@gmail.com> - 2019-11-05 18:05 +0100
              Re: One works, the other doesn't? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-05 09:28 -0800
                Re: One works, the other doesn't? Bonita Montero <Bonita.Montero@gmail.com> - 2019-11-05 19:02 +0100
                Re: One works, the other doesn't? David Brown <david.brown@hesbynett.no> - 2019-11-05 23:21 +0100
                Re: One works, the other doesn't? Bonita Montero <Bonita.Montero@gmail.com> - 2019-11-06 18:36 +0100
      Re: One works, the other doesn't? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-11-05 12:51 -0500
        Re: One works, the other doesn't? DFS <nospam@dfs.com> - 2019-11-05 18:35 -0500
          Re: One works, the other doesn't? Barry Schwarz <schwarzb@delq.com> - 2019-11-05 17:53 -0800
          Re: One works, the other doesn't? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-11-06 09:33 -0500
      Re: One works, the other doesn't? Barry Schwarz <schwarzb@delq.com> - 2019-11-05 13:36 -0800
      Re: One works, the other doesn't? jak <nospam@please.ty> - 2019-11-07 10:17 +0100
        Re: One works, the other doesn't? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-07 12:19 +0000
          Re: One works, the other doesn't? jak <nospam@please.ty> - 2019-11-07 18:59 +0100
            Re: One works, the other doesn't? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-08 00:02 +0000
              Re: One works, the other doesn't? jak <nospam@please.ty> - 2019-11-20 10:54 +0100
                Re: One works, the other doesn't? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-20 11:14 +0000
                Re: One works, the other doesn't? jak <nospam@please.ty> - 2019-11-20 13:22 +0100
                Re: One works, the other doesn't? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-28 15:54 -0800
                Re: One works, the other doesn't? Keith Thompson <kst-u@mib.org> - 2019-11-20 08:42 -0800
                Re: One works, the other doesn't? Manfred <noname@add.invalid> - 2019-11-21 18:56 +0100
                Re: One works, the other doesn't? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-22 01:07 +0000
                Re: One works, the other doesn't? Manfred <noname@add.invalid> - 2019-11-22 15:27 +0100
                Re: One works, the other doesn't? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-28 15:47 -0800
        Re: One works, the other doesn't? DFS <nospam@dfs.com> - 2019-11-07 18:41 -0500
    Re: One works, the other doesn't? Bonita Montero <Bonita.Montero@gmail.com> - 2019-11-05 17:39 +0100
      Re: One works, the other doesn't? DFS <nospam@dfs.com> - 2019-11-05 11:47 -0500
        Re: One works, the other doesn't? Bonita Montero <Bonita.Montero@gmail.com> - 2019-11-05 17:54 +0100
          Re: One works, the other doesn't? luser droog <luser.droog@gmail.com> - 2019-11-05 09:00 -0800
        Re: One works, the other doesn't? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-08 21:02 -0800
          Re: One works, the other doesn't? DFS <nospam@dfs.com> - 2019-11-09 02:09 -0500

csiph-web