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


Groups > comp.lang.c > #161260 > unrolled thread

Why does C allow structs to have a tag?

Started byJames Harris <james.harris.1@gmail.com>
First post2021-06-06 13:16 +0100
Last post2021-06-17 19:30 +0200
Articles 20 on this page of 391 — 31 participants

Back to article view | Back to comp.lang.c


Contents

  Why does C allow structs to have a tag? James Harris <james.harris.1@gmail.com> - 2021-06-06 13:16 +0100
    Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-06 15:27 +0200
      Re: Why does C allow structs to have a tag? Thiago Adams <thiago.adams@gmail.com> - 2021-06-07 06:00 -0700
        Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-07 18:06 +0200
    Re: Why does C allow structs to have a tag? Öö Tiib <ootiib@hot.ee> - 2021-06-06 06:34 -0700
    Re: Why does C allow structs to have a tag? James Harris <james.harris.1@gmail.com> - 2021-06-06 16:33 +0100
    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-06 14:59 +0100
      Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-06 15:05 +0000
        Re: Why does C allow structs to have a tag? Manfred <noname@add.invalid> - 2021-06-06 18:58 +0200
          Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-06 21:12 +0200
            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-06 21:02 +0100
              Re: Why does C allow structs to have a tag? Richard Harnden <richard.nospam@gmail.com> - 2021-06-06 21:25 +0100
              Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-06 15:13 -0700
                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-06 23:55 +0100
                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-06 17:02 -0700
                  Re: Why does C allow structs to have a tag? James Harris <james.harris.1@gmail.com> - 2021-06-07 18:42 +0100
                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-07 19:39 +0100
                Re: Why does C allow structs to have a tag? Manfred <noname@add.invalid> - 2021-06-07 17:15 +0200
                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-07 12:03 -0700
                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-07 20:55 +0100
                      Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-07 22:17 +0200
                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-07 21:54 +0100
                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-07 13:22 -0700
                        Re: Why does C allow structs to have a tag? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-06-07 13:36 -0700
              Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-07 08:52 +0200
                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-07 11:06 +0100
                  Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-07 13:25 +0200
                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-07 13:00 +0100
                      Re: Why does C allow structs to have a tag? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-06-07 07:25 -0700
                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-07 16:31 +0100
                          Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-07 16:15 +0000
                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-07 17:53 +0100
                              Re: Why does C allow structs to have a tag? James Harris <james.harris.1@gmail.com> - 2021-06-07 19:02 +0100
                              Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-07 22:26 +0000
                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-08 00:19 +0100
                                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-07 17:06 -0700
                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-08 11:13 +0100
                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-08 11:43 -0700
                  Re: Why does C allow structs to have a tag? James Harris <james.harris.1@gmail.com> - 2021-06-07 18:54 +0100
                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-07 19:57 +0100
      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-06 15:10 -0700
    Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-06 14:51 +0000
      Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-06 16:05 +0100
    Re: Why does C allow structs to have a tag? James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-06-06 14:20 -0400
    Re: Why does C allow structs to have a tag? Richard Damon <Richard@Damon-Family.org> - 2021-06-06 15:03 -0400
      Re: Why does C allow structs to have a tag? James Harris <james.harris.1@gmail.com> - 2021-06-07 18:38 +0100
    Re: Why does C allow structs to have a tag? Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2021-06-08 08:06 -0600
      Re: Why does C allow structs to have a tag? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-06-08 07:45 -0700
        Re: Why does C allow structs to have a tag? Guillaume <message@bottle.org> - 2021-06-08 17:09 +0200
          Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-08 16:00 +0000
            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-08 17:23 +0100
              Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-08 18:59 +0000
                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-09 00:22 +0100
                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-08 16:53 -0700
          Re: Why does C allow structs to have a tag? James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-06-09 11:40 -0400
            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-09 17:36 +0100
              Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-09 17:48 +0000
                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-09 20:19 +0100
                  Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-09 21:28 +0000
                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-09 23:47 +0100
                      Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-10 11:14 +0200
                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-10 12:38 +0100
                          Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-10 15:30 +0200
                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-10 15:18 +0100
                              Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-10 16:55 +0200
                                Re: Why does C allow structs to have a tag? Manfred <noname@add.invalid> - 2021-06-10 17:23 +0200
                                  Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-10 20:47 +0200
                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-10 17:19 +0100
                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-11 09:52 +0100
                                  Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-11 11:25 +0200
                                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-11 12:00 -0700
                                    Re: Why does C allow structs to have a tag? Guillaume <message@bottle.org> - 2021-06-11 21:14 +0200
                                      Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-11 19:46 +0000
                                        Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-11 15:28 -0700
                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-11 15:06 -0700
                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-11 15:08 -0700
                                      Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-12 00:32 +0200
                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-11 22:32 +0100
                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-11 15:17 -0700
                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-11 23:29 +0100
                                          Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-11 23:21 +0000
                                            Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-06-12 00:39 +0100
                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-12 01:11 +0100
                                                Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-12 00:51 +0000
                                                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-12 11:08 +0100
                                                    Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-12 16:12 +0000
                                                      Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-12 18:36 +0100
                                                        Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-12 13:06 -0700
                                                    Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-12 12:42 -0700
                                          Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-12 14:13 +0200
                          Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-10 15:16 +0000
                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-10 16:45 +0100
                              Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-10 16:56 +0000
                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-10 19:32 +0100
                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-09 22:37 +0100
                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-06-09 15:12 -0700
                  Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-09 23:18 +0000
        Re: Why does C allow structs to have a tag? Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2021-06-08 09:25 -0600
          Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-08 16:13 +0000
        Re: Why does C allow structs to have a tag? Richard Damon <Richard@Damon-Family.org> - 2021-06-08 21:43 -0400
    Re: Why does C allow structs to have a tag? John Bode <jfbode1029@gmail.com> - 2021-06-08 15:03 -0500
      Re: Why does C allow structs to have a tag? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-06-24 10:33 -0700
        Re: Why does C allow structs to have a tag? Öö Tiib <ootiib@hot.ee> - 2021-06-24 13:45 -0700
        Re: Why does C allow structs to have a tag? John Bode <jfbode1029@gmail.com> - 2021-07-01 17:57 -0500
          Re: Why does C allow structs to have a tag? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-07-11 00:26 -0700
            Re: Why does C allow structs to have a tag? John Bode <jfbode1029@gmail.com> - 2021-07-26 09:49 -0500
              Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-07-27 15:47 +0000
                Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-27 10:55 -0700
                  Re: Why does C allow structs to have a tag? Guillaume <message@bottle.org> - 2021-07-27 23:48 +0200
                    Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-27 22:12 +0000
                      Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-28 00:38 +0100
                        Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-27 18:30 -0700
                          Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-28 13:02 +0100
                            Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-28 07:19 -0700
                          Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-28 14:06 +0000
                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-28 15:44 +0100
                              Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-28 15:21 +0000
                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-28 17:49 +0100
                                  Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-28 17:21 +0000
                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-28 23:41 +0100
                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-28 16:07 -0700
                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-29 02:23 +0100
                                          Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-28 19:20 -0700
                                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-29 11:05 +0100
                                              Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-29 08:12 -0700
                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-29 16:34 +0100
                                                  Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-29 17:10 +0000
                                                    Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-29 10:29 -0700
                                                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-29 10:28 -0700
                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-29 19:07 +0100
                                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-29 11:16 -0700
                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-29 19:41 +0100
                                                          Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-29 12:43 -0700
                                                          Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-07-30 15:06 +0000
                                                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-30 16:31 +0100
                                                              Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-07-30 19:49 +0200
                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-30 20:03 +0100
                                                                  Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-07-30 23:16 +0200
                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 01:51 +0100
                                                                      Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-07-31 13:42 +0200
                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 14:56 +0100
                                                                          Re: Why does C allow structs to have a tag? Manfred <noname@add.invalid> - 2021-07-31 19:33 +0200
                                                                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 19:17 +0100
                                                                              Re: Why does C allow structs to have a tag? Manfred <noname@add.invalid> - 2021-07-31 21:32 +0200
                                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 23:10 +0100
                                                                                  Re: Why does C allow structs to have a tag? Manfred <noname@add.invalid> - 2021-08-01 00:43 +0200
                                                                                  Re: Why does C allow structs to have a tag? Richard Damon <Richard@Damon-Family.org> - 2021-07-31 15:54 -0700
                                                                                    Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-04 13:36 +0200
                                                                            Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-04 13:32 +0200
                                                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-04 14:24 +0100
                                                                                Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-04 16:08 +0200
                                                                                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-04 16:32 +0100
                                                                                    Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-04 16:33 +0000
                                                                                      Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-04 18:40 +0100
                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-04 19:31 +0100
                                                                                        Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-07 10:03 -0400
                                                                                          Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-07 17:11 +0100
                                                                                            Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-08 08:51 -0400
                                                                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-08 15:41 +0100
                                                                                                Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-08-08 17:12 +0000
                                                                                                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-08 20:25 +0100
                                                                                                Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-08-08 20:21 +0100
                                                                                                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-08 20:38 +0100
                                                                                                    Re: Why does C allow structs to have a tag? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-08-08 14:00 -0700
                                                                                                      Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-08 22:16 +0100
                                                                                                    Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-08-08 22:17 +0100
                                                                                                      Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-08 22:32 +0100
                                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-08 23:13 +0100
                                                                                                        Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-08-09 01:46 +0100
                                                                                                          Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-09 10:54 +0100
                                                                                                            Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-09 03:59 -0700
                                                                                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-09 13:55 +0100
                                                                                                                Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-09 16:08 +0200
                                                                                                                  Re: Why does C allow structs to have a tag? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-08-09 07:53 -0700
                                                                                                                    Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-09 08:28 -0700
                                                                                                                  Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-09 08:19 -0700
                                                                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-09 16:51 +0100
                                                                                                            Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-08-09 16:47 +0100
                                                                                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-09 17:09 +0100
                                                                                                      Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-08 15:30 -0700
                                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-09 00:33 +0100
                                                                                                        Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-08 20:03 -0400
                                                                                                          Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-09 01:29 -0700
                                                                                                            Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-09 15:05 -0400
                                                                                                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-09 23:48 +0100
                                                                                                              Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-09 16:45 -0700
                                                                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-10 01:33 +0100
                                                                                                                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-09 17:52 -0700
                                                                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-10 11:17 +0100
                                                                                                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-10 11:22 -0700
                                                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-10 20:05 +0100
                                                                                                                          Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-10 13:49 -0700
                                                                                                                  Re: Why does C allow structs to have a tag? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-08-10 03:03 -0700
                                                                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-10 16:27 +0100
                                                                                                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-10 11:17 -0700
                                                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-10 20:23 +0100
                                                                                                                          Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-10 14:00 -0700
                                                                                                                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-10 22:54 +0100
                                                                                                                              Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-10 15:32 -0700
                                                                                                                Re: Why does C allow structs to have a tag? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-08-09 17:53 -0700
                                                                                                                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-09 18:27 -0700
                                                                                                              Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-10 01:55 -0700
                                                                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-10 12:19 +0100
                                                                                                              Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-10 02:04 -0700
                                                                                                              Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-10 09:42 -0700
                                                                                                              Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-08-11 17:19 +0000
                                                                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 20:04 +0100
                                                                                                                  Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-08-11 20:19 +0000
                                                                                                                    Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-11 16:51 -0400
                                                                                                                      Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-11 21:33 +0000
                                                                                                                        Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-11 19:10 -0400
                                                                                                                      Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-08-12 16:08 +0000
                                                                                                  Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-08 19:56 +0000
                                                                                                    Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-10 14:35 -0700
                                                                                                      Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-10 21:41 +0000
                                                                                                        Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-10 15:08 -0700
                                                                                                          Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-10 23:22 +0100
                                                                                                            Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-10 20:15 -0400
                                                                                                              Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-08-11 08:34 +0000
                                                                                                                Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-08-11 11:23 +0100
                                                                                                                  Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-11 03:46 -0700
                                                                                                                    Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-08-11 14:29 +0100
                                                                                                                      Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-11 07:26 -0700
                                                                                                                        Re: Why does C allow structs to have a tag? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-10-01 15:04 -0700
                                                                                                                Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-11 03:55 -0700
                                                                                                                  Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-11 13:55 +0000
                                                                                                                    Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-11 07:07 -0700
                                                                                                                      Re: Why does C allow structs to have a tag? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-10-01 13:44 -0700
                                                                                                                        Re: Why does C allow structs to have a tag? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-10-01 22:40 -0700
                                                                                                                          Re: Why does C allow structs to have a tag? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-10-02 01:37 -0700
                                                                                                                Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-11 14:29 -0400
                                                                                                                  Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-11 18:54 +0000
                                                                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 20:10 +0100
                                                                                                                      Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-11 20:04 +0000
                                                                                                                    Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-11 17:04 -0400
                                                                                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 11:09 +0100
                                                                                                              Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-11 13:52 +0000
                                                                                                                Re: Why does C allow structs to have a tag? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-08-11 08:01 -0700
                                                                                                                  Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-11 15:06 +0000
                                                                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 16:47 +0100
                                                                                                                      Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-11 16:14 +0000
                                                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 18:27 +0100
                                                                                                                      Re: Why does C allow structs to have a tag? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-08-11 11:01 -0700
                                                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 19:45 +0100
                                                                                                                      Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-11 15:55 -0400
                                                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 22:10 +0100
                                                                                                                      Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-11 22:47 +0200
                                                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 23:00 +0100
                                                                                                                          Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-12 10:29 +0200
                                                                                                                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-12 12:10 +0100
                                                                                                                              Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-12 16:28 +0200
                                                                                                                                Re: Why does C allow structs to have a tag? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-08-12 08:03 -0700
                                                                                                                                Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-12 15:52 +0000
                                                                                                                                  Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-12 17:55 +0200
                                                                                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-12 16:59 +0100
                                                                                                                                  Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-12 19:44 +0200
                                                                                                                                    Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-08-12 19:02 +0000
                                                                                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-12 20:22 +0100
                                                                                                                                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-12 11:10 -0700
                                                                                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-12 23:17 +0100
                                                                                                                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-12 16:52 -0700
                                                                                                                                        Re: Why does C allow structs to have a tag? Richard Damon <Richard@Damon-Family.org> - 2021-08-12 22:22 -0400
                                                                                                                                          Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-12 19:51 -0700
                                                                                                                                        Re: Why does C allow structs to have a tag? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-10-01 13:49 -0700
                                                                                                                              Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-08-12 16:52 +0000
                                                                                                                                Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-08-12 18:45 +0000
                                                                                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-12 22:17 +0100
                                                                                                                      Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-08-11 21:09 +0000
                                                                                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 23:13 +0100
                                                                                                                          Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-11 23:30 +0100
                                                                                                                            Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-12 10:39 +0200
                                                                                                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-12 12:26 +0100
                                                                                                                                Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-12 16:44 +0200
                                                                                                                                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-12 17:20 +0100
                                                                                                                                    Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-12 20:00 +0200
                                                                                                                          Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-08-12 00:44 +0000
                                                                                                                    Re: Why does C allow structs to have a tag? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-08-11 10:39 -0700
                                                                                                                      Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-08-11 17:52 +0000
                                                                                                                    Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-11 11:41 -0700
                                                                                                Re: Why does C allow structs to have a tag? DFS <nospam@dfs.com> - 2021-08-08 16:00 -0400
                                                                                                Re: Why does C allow structs to have a tag? Ike Naar <ike@rie.sdf.org> - 2021-08-09 05:46 +0000
                                                                                                  Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-09 01:38 -0700
                                                                                                    Re: Why does C allow structs to have a tag? Michael S <already5chosen@yahoo.com> - 2021-08-09 01:57 -0700
                                                                                                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-09 10:55 +0100
                                                                                  Re: Why does C allow structs to have a tag? James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-08-04 11:48 -0400
                                                                                    Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-08-04 19:34 +0200
                                                                          Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-07-31 19:18 +0000
                                                                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 22:35 +0100
                                                                              Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-07-31 23:51 +0000
                                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-01 01:46 +0100
                                                          Re: Why does C allow structs to have a tag? Manfred <noname@add.invalid> - 2021-07-30 17:20 +0200
                                                            Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 11:16 -0700
                                                              Re: Why does C allow structs to have a tag? Manfred <noname@add.invalid> - 2021-07-30 20:24 +0200
                                                                Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 14:17 -0700
                                                  Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-07-30 14:55 +0000
                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-30 16:13 +0100
                                                      Re: Why does C allow structs to have a tag? "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2021-07-30 09:08 -0700
                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-30 18:18 +0100
                                                          Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-30 17:38 +0000
                                                            Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 11:17 -0700
                                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-30 20:33 +0100
                                                                Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-30 20:10 +0000
                                                                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-30 21:50 +0100
                                                                    Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 14:49 -0700
                                                                  Re: Why does C allow structs to have a tag? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-07-30 14:39 -0700
                                                                Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 14:44 -0700
                                                                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 00:08 +0100
                                                                    Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 16:31 -0700
                                                                Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-07-31 19:57 +0000
                                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 11:01 -0700
                                                        Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-07-30 23:28 +0200
                                                          Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 15:19 -0700
                                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 11:12 -0700
                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-30 20:26 +0100
                                                          Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-30 20:08 +0000
                                                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-30 22:10 +0100
                                                              Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 15:34 -0700
                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 00:13 +0100
                                                                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 16:36 -0700
                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 02:23 +0100
                                                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 21:14 -0700
                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 11:27 +0100
                                                                      Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-31 15:29 -0700
                                                                        Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-31 15:48 -0700
                                                                          Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-01 00:14 +0100
                                                                            Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-31 16:25 -0700
                                                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-01 00:52 +0100
                                                                            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-01 00:29 +0100
                                                                              Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-31 16:50 -0700
                                                                                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-01 01:16 +0100
                                                                                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-31 18:01 -0700
                                                                                    Re: Why does C allow structs to have a tag? gazelle@shell.xmission.com (Kenny McCormack) - 2021-08-01 01:38 +0000
                                                                                      Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-01 11:41 +0100
                                                                                        Re: Why does C allow structs to have a tag? gazelle@shell.xmission.com (Kenny McCormack) - 2021-08-01 19:14 +0000
                                                                                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-01 11:54 +0100
                                                                                      Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-08-01 16:34 +0100
                                                                                        Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-08-01 14:58 -0700
                                                                        Re: Why does C allow structs to have a tag? Manfred <noname@invalid.add> - 2021-08-01 19:27 +0200
                                                          Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 14:43 -0700
                                                      Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-07-30 23:33 +0000
                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 02:11 +0100
                                                          Re: Why does C allow structs to have a tag? antispam@math.uni.wroc.pl - 2021-07-31 20:33 +0000
                                                      Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-07-31 02:14 +0000
                                                        Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 21:23 -0700
                                                        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-31 11:39 +0100
                                                          Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-31 12:58 -0700
                                                            Re: Why does C allow structs to have a tag? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2021-07-31 21:21 +0000
                                                Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-07-30 14:54 +0000
                                                  Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-30 10:47 -0700
                                                    Re: Why does C allow structs to have a tag? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-07-30 14:16 -0700
                                              Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-07-30 14:51 +0000
                                              Re: Why does C allow structs to have a tag? Manfred <noname@add.invalid> - 2021-07-30 20:22 +0200
                                                Re: Why does C allow structs to have a tag? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-07-30 14:07 -0700
                                            Re: Why does C allow structs to have a tag? John Dill <jadill33@gmail.com> - 2021-07-29 06:09 -0700
                                              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-29 14:26 +0100
                                                Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-29 13:51 +0000
                                                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-07-29 16:18 +0100
                      Re: Why does C allow structs to have a tag? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-09-30 05:39 -0700
                    Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-27 17:14 -0700
                  Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-07-28 02:01 +0000
                    Re: Why does C allow structs to have a tag? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-07-27 19:07 -0700
                Re: Why does C allow structs to have a tag? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-07-27 12:32 -0700
                Re: Why does C allow structs to have a tag? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-07-27 12:41 -0700
                Re: Why does C allow structs to have a tag? John Bode <jfbode1029@gmail.com> - 2021-07-30 09:02 -0500
                  Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-07-30 15:19 +0100
                    Re: Why does C allow structs to have a tag? John Bode <jfbode1029@gmail.com> - 2021-07-30 10:19 -0500
                      Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-07-30 16:34 +0100
                      Re: Why does C allow structs to have a tag? scott@slp53.sl.home (Scott Lurndal) - 2021-07-30 15:58 +0000
                  Re: Why does C allow structs to have a tag? Lowell Gilbert <lgusenet@be-well.ilk.org> - 2021-07-30 11:28 -0400
                  Re: Why does C allow structs to have a tag? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-09-06 05:20 -0700
              Re: Why does C allow structs to have a tag? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-09-06 05:09 -0700
    Re: Why does C allow structs to have a tag? Siri Cruise <chine.bleu@yahoo.com> - 2021-06-11 12:33 -0700
    Re: Why does C allow structs to have a tag? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-06-16 19:39 -0700
      Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-06-17 11:50 +0100
        Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-17 12:02 +0100
          Re: Why does C allow structs to have a tag? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-06-17 17:05 +0100
        Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-17 13:49 +0200
          Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-17 13:39 +0100
            Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-17 15:05 +0200
              Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-17 14:34 +0100
                Re: Why does C allow structs to have a tag? David Brown <david.brown@hesbynett.no> - 2021-06-17 18:35 +0200
                  Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-17 18:14 +0100
      Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-17 11:29 +0100
        Re: Why does C allow structs to have a tag? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-06-17 08:22 -0700
          Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-17 16:22 +0000
            Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-17 17:57 +0100
              Re: Why does C allow structs to have a tag? Kaz Kylheku <563-365-8930@kylheku.com> - 2021-06-17 17:53 +0000
                Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-17 21:27 +0100
                  Re: Why does C allow structs to have a tag? Öö Tiib <ootiib@hot.ee> - 2021-06-17 17:58 -0700
                    Re: Why does C allow structs to have a tag? Bart <bc@freeuk.com> - 2021-06-18 11:25 +0100
          Re: Why does C allow structs to have a tag? Guillaume <message@bottle.org> - 2021-06-17 19:30 +0200

Page 12 of 20 — ← Prev page 1 … 10 11 [12] 13 14 … 20  Next page →


#162309

FromMichael S <already5chosen@yahoo.com>
Date2021-08-11 03:46 -0700
Message-ID<63773d19-8176-43a0-9c6d-47f72b1e1c10n@googlegroups.com>
In reply to#162308
On Wednesday, August 11, 2021 at 1:23:55 PM UTC+3, Ben Bacarisse wrote:
> anti...@math.uni.wroc.pl writes: 
> 
> > DFS <nos...@dfs.com> wrote: 
> <cut>
> >> ================================================================= 
> >> 
> >> //option 1: one puts per line (suggested by bart) 
> >> int i = 0; 
> >> char buff[longword+3]; 
> >> char line[tcols]; 
> >> *line = '\0'; 
> >> while(i < matchcnt) { 
> >> for(int j = 1;j<=maxcols;j++) { 
> >> sprintf(buff,"%-*s ",longword,matchwords[i++]); 
> >> strcat(line,buff); 
> >> } 
> >> puts(line); 
> >> *buff = '\0'; 
> >> *line = '\0'; 
> >> } 
> >> 
> >> ================================================================= 
> >> 
> >> //option 2: one big string, one puts (per Lurndal) 
> >> static char line[10000000]; //declared outside the func 
> >> 
> >> int i = 0; 
> >> char buff[longword+3]; 
> >> *line = '\0'; 
> >> while(i < matchcnt) { 
> >> for(int j = 1;j<=maxcols;j++) { 
> >> sprintf(buff,"%-*s ",longword,matchwords[i++]); 
> >> strcat(line,buff); 
> > ^^^^^^^^^^^^^^^^^^ 
> >> } 
> >> *buff = '\0'; 
> >> strcat(line,"\n"); 
> >> } 
> >> puts(line); 
> >> 
> >> ================================================================= 
> > 
> > The 'strcat' in a loop is classic antipattern: it causes quadratic 
> > complexity to to repeated scanning for end of 'line'. Use something 
> > like 
> > 
> > char * cp = line; 
> > ..... 
> > strcat(cp, buff); 
> > cp += strlen(buff); 
> > ....
> ... or get the length first and use memcpy. But my favourite is 
> 
> cp += snprintf(cp, "%s", whatever); 
> 
> -- 
> Ben.

Don't you mean sprintf() ?
snprintf() requires one more parameter (size of the target buffer) and does *not* return the number of actually written characters when buffer is too small.

[toc] | [prev] | [next] | [standalone]


#162311

FromBen Bacarisse <ben.usenet@bsb.me.uk>
Date2021-08-11 14:29 +0100
Message-ID<87tujwgldp.fsf@bsb.me.uk>
In reply to#162309
Michael S <already5chosen@yahoo.com> writes:

> On Wednesday, August 11, 2021 at 1:23:55 PM UTC+3, Ben Bacarisse wrote:
>> anti...@math.uni.wroc.pl writes: 
>> 
>> > DFS <nos...@dfs.com> wrote: 
>> <cut>
>> >> ================================================================= 
>> >> 
>> >> //option 1: one puts per line (suggested by bart) 
>> >> int i = 0; 
>> >> char buff[longword+3]; 
>> >> char line[tcols]; 
>> >> *line = '\0'; 
>> >> while(i < matchcnt) { 
>> >> for(int j = 1;j<=maxcols;j++) { 
>> >> sprintf(buff,"%-*s ",longword,matchwords[i++]); 
>> >> strcat(line,buff); 
>> >> } 
>> >> puts(line); 
>> >> *buff = '\0'; 
>> >> *line = '\0'; 
>> >> } 
>> >> 
>> >> ================================================================= 
>> >> 
>> >> //option 2: one big string, one puts (per Lurndal) 
>> >> static char line[10000000]; //declared outside the func 
>> >> 
>> >> int i = 0; 
>> >> char buff[longword+3]; 
>> >> *line = '\0'; 
>> >> while(i < matchcnt) { 
>> >> for(int j = 1;j<=maxcols;j++) { 
>> >> sprintf(buff,"%-*s ",longword,matchwords[i++]); 
>> >> strcat(line,buff); 
>> > ^^^^^^^^^^^^^^^^^^ 
>> >> } 
>> >> *buff = '\0'; 
>> >> strcat(line,"\n"); 
>> >> } 
>> >> puts(line); 
>> >> 
>> >> ================================================================= 
>> > 
>> > The 'strcat' in a loop is classic antipattern: it causes quadratic 
>> > complexity to to repeated scanning for end of 'line'. Use something 
>> > like 
>> > 
>> > char * cp = line; 
>> > ..... 
>> > strcat(cp, buff); 
>> > cp += strlen(buff); 
>> > ....
>> ... or get the length first and use memcpy. But my favourite is 
>> 
>> cp += snprintf(cp, "%s", whatever); 
>> 
>> -- 
>> Ben.
>
> Don't you mean sprintf() ?

Yes, thanks.  Finger memory making me type letters.

> snprintf() requires one more parameter (size of the target buffer) and
> does *not* return the number of actually written characters when
> buffer is too small.

snprintf is, in fact, what one usually wants to avoid making assumptions
about available space (hence my urge to type it!) but the pattern
becomes more complex in portable code because you can't write this:

  while (cp < ep) cp += snprintf(cp, ep - cp, "%s", whatever);

because the construction of the pointer (and the subsequent comparison)
are undefined.  Once the pattern gets more complicated, other options
start to look simpler.

-- 
Ben.

[toc] | [prev] | [next] | [standalone]


#162316

FromMichael S <already5chosen@yahoo.com>
Date2021-08-11 07:26 -0700
Message-ID<abc90066-026b-489d-9792-596e584c0af1n@googlegroups.com>
In reply to#162311
On Wednesday, August 11, 2021 at 4:29:52 PM UTC+3, Ben Bacarisse wrote:
> Michael S <already...@yahoo.com> writes: 
> 
> > On Wednesday, August 11, 2021 at 1:23:55 PM UTC+3, Ben Bacarisse wrote: 
> >> anti...@math.uni.wroc.pl writes: 
> >> 
> >> > DFS <nos...@dfs.com> wrote: 
> >> <cut> 
> >> >> ================================================================= 
> >> >> 
> >> >> //option 1: one puts per line (suggested by bart) 
> >> >> int i = 0; 
> >> >> char buff[longword+3]; 
> >> >> char line[tcols]; 
> >> >> *line = '\0'; 
> >> >> while(i < matchcnt) { 
> >> >> for(int j = 1;j<=maxcols;j++) { 
> >> >> sprintf(buff,"%-*s ",longword,matchwords[i++]); 
> >> >> strcat(line,buff); 
> >> >> } 
> >> >> puts(line); 
> >> >> *buff = '\0'; 
> >> >> *line = '\0'; 
> >> >> } 
> >> >> 
> >> >> ================================================================= 
> >> >> 
> >> >> //option 2: one big string, one puts (per Lurndal) 
> >> >> static char line[10000000]; //declared outside the func 
> >> >> 
> >> >> int i = 0; 
> >> >> char buff[longword+3]; 
> >> >> *line = '\0'; 
> >> >> while(i < matchcnt) { 
> >> >> for(int j = 1;j<=maxcols;j++) { 
> >> >> sprintf(buff,"%-*s ",longword,matchwords[i++]); 
> >> >> strcat(line,buff); 
> >> > ^^^^^^^^^^^^^^^^^^ 
> >> >> } 
> >> >> *buff = '\0'; 
> >> >> strcat(line,"\n"); 
> >> >> } 
> >> >> puts(line); 
> >> >> 
> >> >> ================================================================= 
> >> > 
> >> > The 'strcat' in a loop is classic antipattern: it causes quadratic 
> >> > complexity to to repeated scanning for end of 'line'. Use something 
> >> > like 
> >> > 
> >> > char * cp = line; 
> >> > ..... 
> >> > strcat(cp, buff); 
> >> > cp += strlen(buff); 
> >> > .... 
> >> ... or get the length first and use memcpy. But my favourite is 
> >> 
> >> cp += snprintf(cp, "%s", whatever); 
> >> 
> >> -- 
> >> Ben. 
> > 
> > Don't you mean sprintf() ?
> Yes, thanks. Finger memory making me type letters.
> > snprintf() requires one more parameter (size of the target buffer) and 
> > does *not* return the number of actually written characters when 
> > buffer is too small.
> snprintf is, in fact, what one usually wants to avoid making assumptions 
> about available space (hence my urge to type it!) but the pattern 
> becomes more complex in portable code because you can't write this: 
> 
> while (cp < ep) cp += snprintf(cp, ep - cp, "%s", whatever); 
> 
> because the construction of the pointer (and the subsequent comparison) 
> are undefined. Once the pattern gets more complicated, other options 
> start to look simpler. 
> 
> -- 
> Ben.

The code below is what I have in majority of my embedded projects.
May be, not 100% portable, by I don't care even about 25% portability. If it works on 1-2-3-4 targets that I care about, I am satisfied.
The purpose of my_pritntf() is to prevent buffer overflows (when used in code patterns similar to one you illustrated above) rather than to always output something meaningful.
For systems in question, it tends to be used in "nice to have" parts like telnet and web interfaces that are mostly used during development. For core functionality I try to impose anti-Doug-McIlroy principles, i.e. avoid both text inputs and text outputs. Not 100% successfully, last years one client in one small project insisted on JASON-based main COMM protocol, but that's a rare exception.

#include <stdio.h>
#include <limits.h>
#include <stdarg.h>

#include "my_snprintf.h"

// my_snprintf - Write formatted output to sized buffer
// my_snprintf is similar to snprintf() with following modifications
// 1. Argument n is signed. For n <= 0 the function does nothing and returns 0
// 2. Return value is always a number of characters that have been into s,
//    not counting the terminating null character.
// The rest of description applies to case of positive n.
//   Unlike snprintf(), if an encoding error occurs, a 0 is returned and
//   the terminating null character is written to s[0].
//   Unlike snprintf(), if n had not been sufficiently large, a value of n-1
//   is returned  and the terminating null character is written to s[n-1].
int
my_snprintf(char * s, ptrdiff_t n, const char * format, ...)
{
  if (n <= 0)
    return 0;
  if (n > INT_MAX)
    n = INT_MAX;

  va_list args;
  va_start(args, format);
  int ret = vsnprintf(s, n, format, args);
  if (ret < 0)
  { // encoding error.
    // since our code uses no UNICODE, it should never happen, but let's handle it nevertheless
    s[0] = 0; // may be, unnecessary
    return 0;
  }

  if (ret >= n) {
    s[n-1] = 0; // most likely unnecessary
    return n-1;
  }

  return ret;
}

[toc] | [prev] | [next] | [standalone]


#162923

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2021-10-01 15:04 -0700
Message-ID<8635pktn9i.fsf@linuxsc.com>
In reply to#162316
Michael S <already5chosen@yahoo.com> writes:

[...]

> The purpose of my_pritntf() is to prevent buffer overflows [...]
> rather than to always output something meaningful.  [...]

Sounds useful and practical.

> [..some whitespace added in what follows..]
>
> #include <stdio.h>
> #include <limits.h>
> #include <stdarg.h>
>
> #include "my_snprintf.h"
>
> // my_snprintf - Write formatted output to sized buffer
> // my_snprintf is similar to snprintf() with following modifications
> //
> // 1.  Argument n is signed.  For n <= 0 the function does nothing
> //     and returns 0
> //
> // 2.  Return value is always a number of characters that have been
> //     into s, not counting the terminating null character.
> //
> // The rest of description applies to case of positive n.
> //   Unlike snprintf(), if an encoding error occurs, a 0 is returned
> //   and the terminating null character is written to s[0].
> //   Unlike snprintf(), if n had not been sufficiently large, a
> //   value of n-1 is returned  and the terminating null character is
> //   written to s[n-1].
>
> int
> my_snprintf(char * s, ptrdiff_t n, const char * format, ...)
> {
>   if (n <= 0)
>     return 0;
>   if (n > INT_MAX)
>     n = INT_MAX;
>
>   va_list args;
>   va_start(args, format);
>   int ret = vsnprintf(s, n, format, args);
>   if (ret < 0)
>   { // encoding error.
>     // since our code uses no UNICODE, it should never happen,
>     // but let's handle it nevertheless
>     s[0] = 0; // may be, unnecessary
>     return 0;
>   }
>
>   if (ret >= n) {
>     s[n-1] = 0; // most likely unnecessary
>     return n-1;
>   }
>
>   return ret;
> }

Some short comments:

One: signed types have issues.  Rather than using a signed type
for the parameter 'n', use a large unsigned type such as unsigned
long long.  Doing that still allows arguments having a signed
type to be checked for negative values, following the rules for
conversion of a signed value to an unsigned type.

Two: va_start() always requires a corresponding va_end().

Three: when supplying a *printf() function, it is customary to
supply also a corresponding *vprintf() function, which makes
writing the non-v form straightforward.  It's two functions for
the price of one (plus only a little bit).  Also it makes the
habit of using va_end() along with va_start() fall out with
essentially no effort.


To illustrate these points in C code, here is a revised writing
of my_snprintf(), along with my_vsnprintf();

// --- cut here ---

#include <limits.h>
#include <stdio.h>
#include <stdarg.h>

typedef unsigned long long  ULL;

extern  int my_vsnprintf( char *, ULL, const char *, va_list );

int
my_snprintf( char * s, ULL n, const char * format, ... ){
    va_list args;
    int r;

    va_start( args, format );
    r = my_vsnprintf( s, n, format, args );
    va_end( args );

    return  r;
}

int
my_vsnprintf( char * s, ULL n0, const char * format, va_list args ){
    if(  n0 > -1ULL>>1  ||  n0 == 0  )  return  0;

    size_t n = n0 > INT_MAX ? INT_MAX : n0;

    int ret = vsnprintf( s, n, format, args );

    return
        ret < 0   ?    s[0]   = 0,    0         :
        ret >= n  ?    s[n-1] = 0,  n-1         :
        ret;
}

[toc] | [prev] | [next] | [standalone]


#162310

FromMichael S <already5chosen@yahoo.com>
Date2021-08-11 03:55 -0700
Message-ID<2c0cb99f-2d5f-4149-8b03-d96ecc3d6543n@googlegroups.com>
In reply to#162306
On Wednesday, August 11, 2021 at 11:34:16 AM UTC+3, anti...@math.uni.wroc.pl wrote:
> DFS <nos...@dfs.com> wrote: 
> > 
> > Thanks. I created a static array[10_000_000] outside the function, and 
> > it handled large results sets just fine. But another issue popped up, 
> > using option 2, which concatenates words one by one into that static 
> > array, then does one puts() at the end. 
> > 
> > Turns out it's VERY slow for large result sets. 
> > 
> > Option 1 Option 2 
> > substring catt: 91 matches found 0.04s 0.038s 
> > substring cat : 3710 matches found 0.20s 0.16s 
> > substring ca : 22793 matches found 1.39s 2.25s 
> > substring c : 128689 matches found 7.75s 57.91s 
> > substring e : 252896 matches found 15.29s 216.58s 
> > 
> > Option 1 starts printing immediately, one line at a time. Option 2 sits 
> > there constructing that long string for quite a while. Too long I 
> > think. What might I be doing wrong? 
> > 
> > Note: the timing includes time to print to screen. Just finding the 
> > word matches is 0.03s using either option. 
> > 
> > 
> > ================================================================= 
> > 
> > //option 1: one puts per line (suggested by bart) 
> > int i = 0; 
> > char buff[longword+3]; 
> > char line[tcols]; 
> > *line = '\0'; 
> > while(i < matchcnt) { 
> > for(int j = 1;j<=maxcols;j++) { 
> > sprintf(buff,"%-*s ",longword,matchwords[i++]); 
> > strcat(line,buff); 
> > } 
> > puts(line); 
> > *buff = '\0'; 
> > *line = '\0'; 
> > } 
> > 
> > ================================================================= 
> > 
> > //option 2: one big string, one puts (per Lurndal) 
> > static char line[10000000]; //declared outside the func 
> > 
> > int i = 0; 
> > char buff[longword+3]; 
> > *line = '\0'; 
> > while(i < matchcnt) { 
> > for(int j = 1;j<=maxcols;j++) { 
> > sprintf(buff,"%-*s ",longword,matchwords[i++]); 
> > strcat(line,buff);
> ^^^^^^^^^^^^^^^^^^
> > } 
> > *buff = '\0'; 
> > strcat(line,"\n"); 
> > } 
> > puts(line); 
> > 
> > =================================================================
> The 'strcat' in a loop is classic antipattern: it causes quadratic 
> complexity to to repeated scanning for end of 'line'. Use something 
> like 
> 
> char * cp = line; 
> ..... 
> strcat(cp, buff); 
> cp += strlen(buff); 
> .... 
> 
> 
> -- 
> Waldek Hebisch

strcat() should have been deprecated in 1989 with replacement that returns something potentially useful, e.g. pointer to 
termination character of result string or length of result string. Or return nothing, which still would be an improvement.

But committees have their own logic.

[toc] | [prev] | [next] | [standalone]


#162314

Fromscott@slp53.sl.home (Scott Lurndal)
Date2021-08-11 13:55 +0000
Message-ID<kFQQI.17255$lK.6119@fx41.iad>
In reply to#162310
Michael S <already5chosen@yahoo.com> writes:
>On Wednesday, August 11, 2021 at 11:34:16 AM UTC+3, anti...@math.uni.wroc.pl wrote:

>
>strcat() should have been deprecated in 1989 with replacement that returns something potentially useful, e.g. pointer to 
>termination character of result string or length of result string. Or return nothing, which still would be an improvement.
>
>But committees have their own logic.

Having been a member of those committees for a decade,
I'll point out that deprecating or changing the semantics of strcat
would have broken vast amounts of existing, functioning
and useful code.

Secondly, as pointed out in the thread, the function snprintf
is a suitable substitute.

[toc] | [prev] | [next] | [standalone]


#162315

FromMichael S <already5chosen@yahoo.com>
Date2021-08-11 07:07 -0700
Message-ID<1f79b2e5-0e07-488f-a529-c00f7d6e046fn@googlegroups.com>
In reply to#162314
On Wednesday, August 11, 2021 at 4:55:41 PM UTC+3, Scott Lurndal wrote:
> Michael S <already...@yahoo.com> writes: 
> >On Wednesday, August 11, 2021 at 11:34:16 AM UTC+3, anti...@math.uni.wroc.pl wrote: 
> 
> > 
> >strcat() should have been deprecated in 1989 with replacement that returns something potentially useful, e.g. pointer to 
> >termination character of result string or length of result string. Or return nothing, which still would be an improvement. 
> > 
> >But committees have their own logic.
> Having been a member of those committees for a decade, 
> I'll point out that deprecating or changing the semantics of strcat 

For me, deprecation does not mean *immediate* removal. For me, it mean that we threaten to remove a function in 15 years time and are actually removing it after 30 years. Or never. But in the mean time conforming compilers issue annoying diagnostics. 

And, of course, nobody suggest changing semantic without changing name.

> would have broken vast amounts of existing, functioning 
> and useful code. 
> 
> Secondly, as pointed out in the thread, the function snprintf 
> is a suitable substitute.

No, sprintf() is more like strcpy(). And snprintf() differs even more.

[toc] | [prev] | [next] | [standalone]


#162916

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2021-10-01 13:44 -0700
Message-ID<86czootqz0.fsf@linuxsc.com>
In reply to#162315
Michael S <already5chosen@yahoo.com> writes:

> On Wednesday, August 11, 2021 at 4:55:41 PM UTC+3, Scott Lurndal wrote:
>
>> Michael S <already...@yahoo.com> writes:
>>
>>> On Wednesday, August 11, 2021 at 11:34:16 AM UTC+3,
>>> anti...@math.uni.wroc.pl wrote:
>>> [...]
>>> strcat() should have been deprecated in 1989 with replacement that
>>> returns something potentially useful, e.g. pointer to
>>> termination character of result string or length of result string.
>>> Or return nothing, which still would be an improvement.
>>>
>>> But committees have their own logic.
>>
>> Having been a member of those committees for a decade, I'll point
>> out that deprecating or changing the semantics of strcat
>
> For me, deprecation does not mean *immediate* removal.  For me, it
> mean that we threaten to remove a function in 15 years time and
> are actually removing it after 30 years.  Or never.

The ISO C standard normally uses the term "obsolescent" to
indicate a language or library feature that may be removed at
some indeterminate point in the future.  If ever, and not
necessarily - some language or library features have been
termed "obsolescent" in earlier versions of the C standard
but restored to non-obsolescent status in later versions.

The ISO C standard normally uses the term "deprecated" to
indicate a language or library feature that is expected to be
removed in some subsequent version of the C standard.  There is a
good chance that removal happens soon (e.g., in the next release)
but there is no guarantee of that.

> But in the mean time conforming compilers issue annoying
> diagnostics.

The ISO C standard does not require diagnostics either for
obsolescent features or deprecated features.  I think it's common
for implemenations to issue diagnostics for deprecated features
but that is completely up to the implementation.  And of course
an implementation is free to issue diagnostics for anything it
wants to, as long as it accepts all strictly conforming programs
(and using obsolescent or deprecated features doesn't violate
that condition, IIANM).

[toc] | [prev] | [next] | [standalone]


#162930

FromAndrey Tarasevich <andreytarasevich@hotmail.com>
Date2021-10-01 22:40 -0700
Message-ID<sj8rcj$c8h$1@dont-email.me>
In reply to#162916
On 10/1/2021 1:44 PM, Tim Rentsch wrote:
> 
> The ISO C standard normally uses the term "obsolescent" to
> indicate a language or library feature that may be removed at
> ...
> The ISO C standard normally uses the term "deprecated" to
> indicate a language or library feature that is expected to be
> ...

Um...

The ISO C standard uses the term "obsolescent" to refer to features 
marked for future removal. ISO C standard does designate the word 
"deprecated" as a standard term. One can encounter the word "deprecated" 
in the standard text, but it is never used to refer to language features.

"Deprecated" is used by C++ standard. "Deprecated" in C++ is an exact 
synonym of "obsolescent" in C.

-- 
Best regards,
Andrey Tarasevich

[toc] | [prev] | [next] | [standalone]


#162931

FromTim Rentsch <tr.17687@z991.linuxsc.com>
Date2021-10-02 01:37 -0700
Message-ID<86tuhzstyl.fsf@linuxsc.com>
In reply to#162930
Andrey Tarasevich <andreytarasevich@hotmail.com> writes:

> On 10/1/2021 1:44 PM, Tim Rentsch wrote:
>
>> The ISO C standard normally uses the term "obsolescent" to
>> indicate a language or library feature that may be removed at
>> ...
>> The ISO C standard normally uses the term "deprecated" to
>> indicate a language or library feature that is expected to be
>> ...
>
> Um...
>
> The ISO C standard uses the term "obsolescent" to refer to
> features marked for future removal.

No, it doesn't.  ISO C standard, Introduction, paragraph 2:

    Certain features are /obsolescent/, which means that they may
    be considered for withdrawal in future revisions of this
    International Standard.

Note the phrase "may be considered".  (The slant characters around
the word obsolescent indicate italics, meaning a definition.)  Such
features may be /considered/ for removal, but they are not /marked/
for removal.


> ISO C standard does designate the word "deprecated" as a standard
> term.

None of the several versions of the ISO C standard that I looked
at give a definition for "deprecate" or "deprecated".  All use
the word, but none of them define it.


> One can encounter the word "deprecated" in the standard text, but
> it is never used to refer to language features.

Certainly it is is.  For example N1256, which is C99 plus three
technical corrigenda, says this in 7.26.9 paragraph 2:

    The gets function is obsolescent, and is deprecated.


> "Deprecated" is used by C++ standard.  "Deprecated" in C++ is an
> exact synonym of "obsolescent" in C.

No, it isn't.  A feature being obsolescent in C means only that
it "may be considered" at a later time, whereas a feature being
deprecated in C++ means that it "[has] been identified" as being
subject to removal in a later standard.  The word obsolescent is
tentative, the word deprecated more definite.  The two terms may
be related but they are not the same.

[toc] | [prev] | [next] | [standalone]


#162328

FromDFS <nospam@dfs.com>
Date2021-08-11 14:29 -0400
Message-ID<9GUQI.8728$Bg6.71@fx42.iad>
In reply to#162306
On 8/11/2021 4:34 AM, antispam@math.uni.wroc.pl wrote:


> The 'strcat' in a loop is classic antipattern: it causes quadratic
> complexity to to repeated scanning for end of 'line'.  Use something
> like
> 
>    char * cp = line;
>    .....
>        strcat(cp, buff);
>        cp += strlen(buff);
>    ....
> 

 From other posts:

> Bacarisse: "my favourite is cp += snprintf(cp, "%s", whatever);"
> (he meant to say sprintf)

> Lurndal: "Building it with snprintf() will be far more flexible and
> efficient."



                       build string, in seconds
                     -----------------------------   build +
                             antispam   sprintf()/   print to
substring  matches  strcat  as above   snprintf()   screen

catt          91     0.036    0.036      0.036       0.037
cat         3710     0.067    0.038      0.038       0.129
ca         22793     1.423    0.044      0.052       0.657
c         128689    53.591    0.084      0.139       4.437
e         252896   207.782    0.132      0.238       8.598


Much better!  Thanks for the suggestions.


built on Win10, using Mingw-w64 GCC
http://mingw-w64.org/doku.php

which I got via
https://github.com/skeeto/w64devkit/releases/tag/v1.8.0

run in cmd.exe shell inside ConEmu

$ prog wordlist.txt option1234  (for dev and testing)

===========================================================================
//print matching words in columns of the same size, with no line
// wrapping in middle of word

//array large enough to output 370K words of length 31
static char line[12000000];

void showresults(char *matchwords[], int matchcnt, int stropt) {
	
	//get longest word in results
	int longword = 0;
	for(int i=0;i<matchcnt;i++) 	{
		int thislen = strlen(matchwords[i]);
		if(thislen>longword) {longword=thislen; }
	}
	
	//get # of columns visible onscreen	
	int tcols = gettcols();
	
	//get max number of columns to print on each line
	//add 2 to longword to account for spaces
	int maxcols = ((int)(tcols/(longword+2)));
	
	//build one big string, do one puts
	//fastest but requires huge array alloc
	int i = 0;
	char buff[longword+3];
	*line = '\0';
	char *cp = line;
	while(i < matchcnt) {
		for(int j = 1;j<=maxcols;j++) {
			
			//add word to buffer
			sprintf(buff,"%-*s  ",longword,matchwords[i++]);
			
			//add buffer to string
			
			//strcat
			if(stropt == 1) {
				strcat(line,buff);
			}
				
			//antispam/strlen	
			else if(stropt == 2) {
				strcat(cp, buff);
				cp += strlen(buff);	
			}
				
			//sprintf	
			else if(stropt == 3) {	
				cp += sprintf(cp, "%s", buff);
			}
				
			//snprintf	
			else if(stropt == 4) {	
			    cp += snprintf(cp, sizeof buff, "%s", buff);
			}
		
		}
		
		//reset buffer
		*buff = '\0';
		
		//add newline
		if(stropt == 1)   //strcat
			strcat(line,"\n");
		else
			cp += sprintf(cp, "\n");		
		
	}
	
	//print to screen
	puts(line);
		
    //show string builder option
    char *stropts[] = {"strcat","antispam/strlen","sprintf","snprintf"};
    printf("%s\n",stropts[stropt-1]);

}	
===========================================================================

[toc] | [prev] | [next] | [standalone]


#162331

Fromscott@slp53.sl.home (Scott Lurndal)
Date2021-08-11 18:54 +0000
Message-ID<r1VQI.5573$xY.4985@fx05.iad>
In reply to#162328
DFS <nospam@dfs.com> writes:
>On 8/11/2021 4:34 AM, antispam@math.uni.wroc.pl wrote:
>
>
>> The 'strcat' in a loop is classic antipattern: it causes quadratic
>> complexity to to repeated scanning for end of 'line'.  Use something
>> like
>> 
>>    char * cp = line;
>>    .....
>>        strcat(cp, buff);
>>        cp += strlen(buff);
>>    ....
>> 
>
> From other posts:
>
>> Bacarisse: "my favourite is cp += snprintf(cp, "%s", whatever);"
>> (he meant to say sprintf)
>
>> Lurndal: "Building it with snprintf() will be far more flexible and
>> efficient."
>
>
>
>                       build string, in seconds
>                     -----------------------------   build +
>                             antispam   sprintf()/   print to
>substring  matches  strcat  as above   snprintf()   screen
>
>catt          91     0.036    0.036      0.036       0.037
>cat         3710     0.067    0.038      0.038       0.129
>ca         22793     1.423    0.044      0.052       0.657
>c         128689    53.591    0.084      0.139       4.437
>e         252896   207.782    0.132      0.238       8.598
>
>
>Much better!  Thanks for the suggestions.
>
>
>built on Win10, using Mingw-w64 GCC
>http://mingw-w64.org/doku.php
>
>which I got via
>https://github.com/skeeto/w64devkit/releases/tag/v1.8.0
>
>run in cmd.exe shell inside ConEmu
>
>$ prog wordlist.txt option1234  (for dev and testing)
>
>===========================================================================
>//print matching words in columns of the same size, with no line
>// wrapping in middle of word
>
>//array large enough to output 370K words of length 31
>static char line[12000000];
>
>void showresults(char *matchwords[], int matchcnt, int stropt) {
>

I was thinking more along the lines of this:
	
static char line[12000000];

/**
 * Catenate the words from 'matchwords' into 'line', computing the
 * word length of the longest single word along the way.
 *
 * @param matchwords   A vector of character pointers, one for each word
 * @param matchcnt     The number of entries in the matchwords vector.
 */
void
showresults(char **matchwords, size_t matchcnt)
{
    size_t longest_word = 0ul;
    char *lp = line;
    char *elp = &line[sizeof(line)]; 

    for(size_t i = 0ul; i < matchcount; i++) {
        char *cp = *matchwords++;
        size_t len = 0ul;
        while ((*cp != '\0') && (lp < elp)) {
            len++;
            *lp++ = *cp++;
        }
        longest_word = max(longest_word, len);
    }

    if (lp < elp) *lp++ = '\0';
    else          line[sizeof(line)-1] = '\0';

    puts(line);
}

It will silently truncate the output string if 'line'
isn't large enough to collect all the words in 'matchwords'.

The implementation of max is left to the student.

[toc] | [prev] | [next] | [standalone]


#162333

FromBart <bc@freeuk.com>
Date2021-08-11 20:10 +0100
Message-ID<sf17aj$3gg$1@dont-email.me>
In reply to#162331
On 11/08/2021 19:54, Scott Lurndal wrote:
> DFS <nospam@dfs.com> writes:
>> On 8/11/2021 4:34 AM, antispam@math.uni.wroc.pl wrote:
>>
>>
>>> The 'strcat' in a loop is classic antipattern: it causes quadratic
>>> complexity to to repeated scanning for end of 'line'.  Use something
>>> like
>>>
>>>     char * cp = line;
>>>     .....
>>>         strcat(cp, buff);
>>>         cp += strlen(buff);
>>>     ....
>>>
>>
>>  From other posts:
>>
>>> Bacarisse: "my favourite is cp += snprintf(cp, "%s", whatever);"
>>> (he meant to say sprintf)
>>
>>> Lurndal: "Building it with snprintf() will be far more flexible and
>>> efficient."
>>
>>
>>
>>                        build string, in seconds
>>                      -----------------------------   build +
>>                              antispam   sprintf()/   print to
>> substring  matches  strcat  as above   snprintf()   screen
>>
>> catt          91     0.036    0.036      0.036       0.037
>> cat         3710     0.067    0.038      0.038       0.129
>> ca         22793     1.423    0.044      0.052       0.657
>> c         128689    53.591    0.084      0.139       4.437
>> e         252896   207.782    0.132      0.238       8.598
>>
>>
>> Much better!  Thanks for the suggestions.
>>
>>
>> built on Win10, using Mingw-w64 GCC
>> http://mingw-w64.org/doku.php
>>
>> which I got via
>> https://github.com/skeeto/w64devkit/releases/tag/v1.8.0
>>
>> run in cmd.exe shell inside ConEmu
>>
>> $ prog wordlist.txt option1234  (for dev and testing)
>>
>> ===========================================================================
>> //print matching words in columns of the same size, with no line
>> // wrapping in middle of word
>>
>> //array large enough to output 370K words of length 31
>> static char line[12000000];
>>
>> void showresults(char *matchwords[], int matchcnt, int stropt) {
>>
> 
> I was thinking more along the lines of this:
> 	
> static char line[12000000];
> 
> /**
>   * Catenate the words from 'matchwords' into 'line', computing the
>   * word length of the longest single word along the way.
>   *
>   * @param matchwords   A vector of character pointers, one for each word
>   * @param matchcnt     The number of entries in the matchwords vector.
>   */
> void
> showresults(char **matchwords, size_t matchcnt)
> {
>      size_t longest_word = 0ul;
>      char *lp = line;
>      char *elp = &line[sizeof(line)];
> 
>      for(size_t i = 0ul; i < matchcount; i++) {
>          char *cp = *matchwords++;
>          size_t len = 0ul;
>          while ((*cp != '\0') && (lp < elp)) {
>              len++;
>              *lp++ = *cp++;
>          }
>          longest_word = max(longest_word, len);
>      }
> 
>      if (lp < elp) *lp++ = '\0';
>      else          line[sizeof(line)-1] = '\0';
> 
>      puts(line);
> }
> 
> It will silently truncate the output string if 'line'
> isn't large enough to collect all the words in 'matchwords'.
> 
> The implementation of max is left to the student.
> 


Oh, I see you managed to make time for this, then!

I hadn't even asked you to write any code, just to look at my results.

I can take it then that my observations were on the mark since you 
aren't interested in refuting them.

[toc] | [prev] | [next] | [standalone]


#162335

Fromscott@slp53.sl.home (Scott Lurndal)
Date2021-08-11 20:04 +0000
Message-ID<B3WQI.8822$cd2.1956@fx02.iad>
In reply to#162333
Bart <bc@freeuk.com> writes:
>On 11/08/2021 19:54, Scott Lurndal wrote:

>I can take it then that my observations were on the mark since you 
>aren't interested in refuting them.
>

No, I'm just not interested in you and your silly obsessions.

[toc] | [prev] | [next] | [standalone]


#162339

FromDFS <nospam@dfs.com>
Date2021-08-11 17:04 -0400
Message-ID<aXWQI.4499$6h1.2228@fx39.iad>
In reply to#162331
On 8/11/2021 2:54 PM, Scott Lurndal wrote:


> I was thinking more along the lines of this:
> 	
> static char line[12000000];
> 
> /**
>   * Catenate the words from 'matchwords' into 'line', computing the
>   * word length of the longest single word along the way.
>   *
>   * @param matchwords   A vector of character pointers, one for each word
>   * @param matchcnt     The number of entries in the matchwords vector.
>   */
> void
> showresults(char **matchwords, size_t matchcnt)
> {
>      size_t longest_word = 0ul;
>      char *lp = line;
>      char *elp = &line[sizeof(line)];
> 
>      for(size_t i = 0ul; i < matchcount; i++) {
>          char *cp = *matchwords++;
>          size_t len = 0ul;
>          while ((*cp != '\0') && (lp < elp)) {
>              len++;
>              *lp++ = *cp++;
>          }
>          longest_word = max(longest_word, len);
>      }
> 
>      if (lp < elp) *lp++ = '\0';
>      else          line[sizeof(line)-1] = '\0';
> 
>      puts(line);
> }
> 
> It will silently truncate the output string if 'line'
> isn't large enough to collect all the words in 'matchwords'.
> 
> The implementation of max is left to the student.


Well, I'm not a student (in the usual sense) and this isn't homework 
(it's just a hobby), but I do appreciate the suggestions and code.

However:

* before constructing the string you have to find the longest word,
   which you use to determine how many columns fit in the current width
   of the terminal.  Each word takes up the same horizontal space:
   longest word + 2 blanks

* the output of your code is one long string, with no spaces between the
   words and no newlines after every N columns

Substring to search for: catt
backscatterbackscatteredbackscatteringbackscattersbescattercattabucattailcattails...

If your terminal width was 70 characters, the longest word 
(backscattering = 14) plus 2 spaces would dictate 4 columns (70/16 = 
4.375), and the correct output is:

Substring to search for: catt
backscatter     backscattered   backscattering  backscatters
bescatter       cattabu         cattail         cattails
cattalo         cattaloes       cattalos        cattan
catted          catter          catteries       cattery
catti           cattie          cattier         catties
cattiest        cattily         cattimandoo     cattiness
catting         cattish         cattishly       cattishness
cattle          cattlebush      cattlefold      cattlegate
cattlehide      cattleless      cattleman       cattlemen
cattleship      cattleya        cattleyak       cattleyas
catty           cattycorner     cattycornered   cattyman
cattyphoid      copycatted      copycatting     discatter
overscatter     rescattering    scatt           scatted
scatter         scatterable     scatteration    scatteraway
scatterbrain    scatterbrained  scatterbrains   scattered
scatteredly     scatteredness   scatterer       scatterers
scattergood     scattergram     scattergraph    scattergun
scattering      scatteringly    scatterings     scatterling
scatterment     scattermouch    scatterplot     scatterplots
scatters        scattershot     scattersite     scattery
scattier        scattiest       scatting        scatts
scatty          tomcatted       tomcatting      unscattered
wildcatted      wildcatter      wildcatting

91 matches for catt in 0.0417 seconds

[toc] | [prev] | [next] | [standalone]


#162307

FromBart <bc@freeuk.com>
Date2021-08-11 11:09 +0100
Message-ID<sf07l7$f56$1@dont-email.me>
In reply to#162305
On 11/08/2021 01:15, DFS wrote:
> On 8/10/2021 6:22 PM, Bart wrote:
>> On 10/08/2021 23:08, DFS wrote:
>>> On 8/10/2021 2:41 PM, Scott Lurndal wrote:
>>
>>>> I was suggesting that the compiler could have just
>>>> stored a 160k string in RO storage and called puts
>>>> with a pointer to it.   There is no need to construct
>>>> it at runtime.
>>>>
>>>> The entire program would reduce to a single call
>>>> to puts with a compiler generated constant string.
>>>
>>> Gotcha.
>>>
>>> I just noticed something in my program.  Using option 2 above, the 
>>> version compiled by tcc crashes when the value in line 3 is large 
>>> (1027424).  The version compiled by gcc doesn't crash.
>>>
>>> Is that a stack overflow issue?
>>>
>>
>> Yes, you're using VLAs, (maybe in option 1 too if longword and tcols 
>> are not compile-time constants).
> 
> They're not.  Longword is the longest word (1 to 31) in a result set, 
> and tcols is the width of your terminal at the time you do the search.
> 
> Here's the app: https://imgur.com/a/cQdvAeM
> 
> 
> 
>> Typical stack size is a few MB. It seems the default stack size of tcc 
>> is smaller than of gcc**. tcc crashes with this:
>>
>>      int n=2000000;
>>      char str[n];
>>      memset(str,0,n);
>>
>> but gcc doesn't, until you change n to 4000000. If I dump the two 
>> executables, then the gcc one contains this:
>>
>>    Stack reserve:    2097152
>>    Stack commit:     4096
>>
>> tcc's has:
>>
>>    Stack reserve:    1048576
>>    Stack commit:     4096
>>
>> There are probably ways of increasing the stack size, but better not 
>> to use VLAs for arrays of this size. (Use static arrays or allocate on 
>> the heap.)
> 
> 
> Thanks.  I created a static array[10_000_000] outside the function, and 
> it handled large results sets just fine.  But another issue popped up, 
> using option 2, which concatenates words one by one into that static 
> array, then does one puts() at the end.
> 
> Turns out it's VERY slow for large result sets.

Because each strcat involves scanning the entire string so far to find 
its end.

However, this would have been the case using the VLA too, or was it fast 
in that case?

Also, the idea of printing just one giant string to the screen is rather 
extreme. Longer strings /are/ printed more quickly compared with very 
short ones. But dozens are characters long will be sufficient; they 
don't need to be millions of characters!

If you do need to construct a string of millions of characters, you 
might try keeping track of the current length as antispam suggested.

Or use a resizable buffer as I normally do it, but this gets complicated.

Or write the text to a temporary file (fprintf), then just display the 
file (either load it into memory, or simply use system("type filename").

[toc] | [prev] | [next] | [standalone]


#162312

Fromscott@slp53.sl.home (Scott Lurndal)
Date2021-08-11 13:52 +0000
Message-ID<GCQQI.17254$lK.16624@fx41.iad>
In reply to#162305
DFS <nospam@dfs.com> writes:
>On 8/10/2021 6:22 PM, Bart wrote:
>> On 10/08/2021 23:08, DFS wrote:
>>> On 8/10/2021 2:41 PM, Scott Lurndal wrote:
>> 
>>>> I was suggesting that the compiler could have just
>>>> stored a 160k string in RO storage and called puts
>>>> with a pointer to it.   There is no need to construct
>>>> it at runtime.
>>>>
>>>> The entire program would reduce to a single call
>>>> to puts with a compiler generated constant string.
>>>
>>> Gotcha.
>>>
>>> I just noticed something in my program.  Using option 2 above, the 
>>> version compiled by tcc crashes when the value in line 3 is large 
>>> (1027424).  The version compiled by gcc doesn't crash.
>>>
>>> Is that a stack overflow issue?
>>>
>> 
>> Yes, you're using VLAs, (maybe in option 1 too if longword and tcols are 
>> not compile-time constants).
>
>They're not.  Longword is the longest word (1 to 31) in a result set, 
>and tcols is the width of your terminal at the time you do the search.
>
>Here's the app: https://imgur.com/a/cQdvAeM
>
>
>
>> Typical stack size is a few MB. It seems the default stack size of tcc 
>> is smaller than of gcc**. tcc crashes with this:
>> 
>>      int n=2000000;
>>      char str[n];
>>      memset(str,0,n);
>> 
>> but gcc doesn't, until you change n to 4000000. If I dump the two 
>> executables, then the gcc one contains this:
>> 
>>    Stack reserve:    2097152
>>    Stack commit:     4096
>> 
>> tcc's has:
>> 
>>    Stack reserve:    1048576
>>    Stack commit:     4096
>> 
>> There are probably ways of increasing the stack size, but better not to 
>> use VLAs for arrays of this size. (Use static arrays or allocate on the 
>> heap.)
>
>
>Thanks.  I created a static array[10_000_000] outside the function, and 
>it handled large results sets just fine.  But another issue popped up, 
>using option 2, which concatenates words one by one into that static 
>array, then does one puts() at the end.
>
>Turns out it's VERY slow for large result sets.

strcat is almost never the right interface to use.  It needs
to scan the entire string to find the terminal nul-byte before
appending.  As the string gets longer, each strcat takes longer
than the one before.

Just keep a pointer to the next element and increment the
pointer each time you add a new element.

[toc] | [prev] | [next] | [standalone]


#162317

FromMalcolm McLean <malcolm.arthur.mclean@gmail.com>
Date2021-08-11 08:01 -0700
Message-ID<5d8700fd-6ba7-4c72-ae2f-1d4ea91fe823n@googlegroups.com>
In reply to#162312
On Wednesday, 11 August 2021 at 14:52:54 UTC+1, Scott Lurndal wrote:
> 
> strcat is almost never the right interface to use. It needs 
> to scan the entire string to find the terminal nul-byte before 
> appending. As the string gets longer, each strcat takes longer 
> than the one before. 
> 
> Just keep a pointer to the next element and increment the 
> pointer each time you add a new element.
>
Most strings are short. Building up a url with strcat is not going to
stress a 3GHz machine. If the strings become huge then, yes, you
need to look at more efficient ways of concatenating them.

[toc] | [prev] | [next] | [standalone]


#162318

Fromscott@slp53.sl.home (Scott Lurndal)
Date2021-08-11 15:06 +0000
Message-ID<PHRQI.5464$xY.2133@fx05.iad>
In reply to#162317
Malcolm McLean <malcolm.arthur.mclean@gmail.com> writes:
>On Wednesday, 11 August 2021 at 14:52:54 UTC+1, Scott Lurndal wrote:
>> 
>> strcat is almost never the right interface to use. It needs 
>> to scan the entire string to find the terminal nul-byte before 
>> appending. As the string gets longer, each strcat takes longer 
>> than the one before. 
>> 
>> Just keep a pointer to the next element and increment the 
>> pointer each time you add a new element.
>>
>Most strings are short. Building up a url with strcat is not going to
>stress a 3GHz machine. If the strings become huge then, yes, you
>need to look at more efficient ways of concatenating them.

Building it with snprintf() will be far more flexible and efficient.

Every cycle matters.

[toc] | [prev] | [next] | [standalone]


#162320

FromBart <bc@freeuk.com>
Date2021-08-11 16:47 +0100
Message-ID<sf0re4$v91$1@dont-email.me>
In reply to#162318
On 11/08/2021 16:06, Scott Lurndal wrote:
> Malcolm McLean <malcolm.arthur.mclean@gmail.com> writes:
>> On Wednesday, 11 August 2021 at 14:52:54 UTC+1, Scott Lurndal wrote:
>>>
>>> strcat is almost never the right interface to use. It needs
>>> to scan the entire string to find the terminal nul-byte before
>>> appending. As the string gets longer, each strcat takes longer
>>> than the one before.
>>>
>>> Just keep a pointer to the next element and increment the
>>> pointer each time you add a new element.
>>>
>> Most strings are short. Building up a url with strcat is not going to
>> stress a 3GHz machine. If the strings become huge then, yes, you
>> need to look at more efficient ways of concatenating them.
> 
> Building it with snprintf() will be far more flexible and efficient.
> 
> Every cycle matters.
> 


Start with this:

     char str[100];
     char* s;

Then a loop like this (all unoptimised code to stop it being optimised 
out of existence):

   for (int i=0; i<10000000; ++i) {
       strcpy(str,"one ");
       strcat(str,"two ");
       strcat(str,"three ");
       strcat(str,"four ");
       strcat(str,"five");
   }
   puts(str);


took 1 second (on my Windows PC running tcc). If use sprintf():

   for (int i=0; i<10000000; ++i) {
       s=str;
       s+=sprintf(s,"%s","one ");
       s+=sprintf(s,"%s","two ");
       s+=sprintf(s,"%s","three ");
       s+=sprintf(s,"%s","four ");
          sprintf(s,"%s","five");
   }
   puts(s);

then it takes 5.5 seconds. With snprintf() as you suggest, it takes 6.1 
seconds. I thought you said every cycle matters?

These all write into the same string. If each iteration uses a newly 
allocated 100-char string, then the strcat loop takes 2.2 seconds, and 
both forms of sprintf take something over 7 seconds.

If I take the second loop above, and write the string directly (so not 
using "%s"), then it makes no difference; it's not the formatting that 
takes the extra time, not for %s anyway, it must be other overheads.

[toc] | [prev] | [next] | [standalone]


Page 12 of 20 — ← Prev page 1 … 10 11 [12] 13 14 … 20  Next page →

Back to top | Article view | comp.lang.c


csiph-web