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


Groups > comp.lang.c > #6897

Re: Query abt union

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: Query abt union
Date 2011-06-24 14:56 -0700
Organization None to speak of
Message-ID <lnk4cadhbs.fsf@nuthaus.mib.org> (permalink)
References <iu06d5$cnu$1@speranza.aioe.org> <YnPMp.17322$PA5.15790@newsfe01.iad> <iu0g7a$b58$1@dont-email.me> <lnzkl8dqt2.fsf@nuthaus.mib.org> <iu2un1$ne7$1@nnrp.ngi.it>

Show all headers | View raw


pozz <pozzugno@gmail.com> writes:
> Il 24/06/2011 02:19, Keith Thompson ha scritto:
>> General rule: Don't use strncpy unless you really understand what it
>> does.  (And if you understand what it does, you probably won't want to
>> use it.)
>
> Sorry, but I'm not able to follow your discussion. Why should I avoid 
> strncpy()?
>
> I have a string buffer defined with a fixed dimension:
>    char mystring[10];
>
> Now I have to copy an unknown string, maybe passed in as an argument 
> function, to mystring array. If I use strcpy(), I could write memory 
> after mystring[].
>
> So I think strncpy() is good to avoid this bad situations:
>
>    char mystring[10];
>    void mystrcpy(const char *arg) {
>      strncpy(mystring, arg, sizeof(mystring) - 1);
>      mystring[sizeof(mystring) - 1] = '\0';
>    }
>
> What is wrong with this?

strncat() is a safer version of strcat(); it takes an extra argument,
n, that specifies the maximum number of characters to copy.
It guarantees that, unless you go past the bounds of the source
or the destination, the destination will contain a valid (i.e.,
null-terminated) string.

strncpy(), in spite of the misleading name, is *not* a safer version
of strcpy().  strncpy() can easily leave the destination array in
a state where it doesn't contain a valid string.  If n is much
larger than the size of the source, it will pad the destination
with multiple null characters, which is usually not useful.

A function that is to strcpy() as strncat() is to strcat() would
be useful, and strncpy() would have been a good name for it.
But there is no such function in the standard library (thought it's
easy enough to roll your own), and the name strncpy() is already
taken for this bizarre thing.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

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


Thread

Query abt union "sumit.sharma" <nospam@nospam.com> - 2011-06-23 20:07 +0000
  Re: Query abt union Ben Pfaff <blp@cs.stanford.edu> - 2011-06-23 13:18 -0700
  Re: Query abt union Shao Miller <sha0.miller@gmail.com> - 2011-06-23 17:20 -0500
    Re: Query abt union James Waldby <not@valid.invalid> - 2011-06-24 17:34 +0000
      Re: Query abt union Shao Miller <sha0.miller@gmail.com> - 2011-06-24 14:42 -0400
        Re: Query abt union James Waldby <not@valid.invalid> - 2011-06-24 21:13 +0000
          Re: Query abt union Shao Miller <sha0.miller@gmail.com> - 2011-06-26 14:08 -0500
            Re: Query abt union James Waldby <not@valid.invalid> - 2011-06-27 05:13 +0000
  Re: Query abt union John Gordon <gordon@panix.com> - 2011-06-23 22:27 +0000
  Re: Query abt union Lew Pitcher <lpitcher@teksavvy.com> - 2011-06-23 18:47 -0400
    Re: Query abt union Shao Miller <sha0.miller@gmail.com> - 2011-06-23 17:54 -0500
      Re: Query abt union Keith Thompson <kst-u@mib.org> - 2011-06-23 17:19 -0700
        Re: Query abt union Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2011-06-23 22:12 -0600
          Re: Query abt union Keith Thompson <kst-u@mib.org> - 2011-06-23 22:32 -0700
            Re: Query abt union Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2011-06-24 08:51 -0600
              Re: Query abt union Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-06-24 16:30 +0100
          Re: Query abt union pete <pfiland@mindspring.com> - 2011-06-24 12:46 -0400
            Re: Query abt union Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2011-06-24 16:18 -0600
        Re: Query abt union pozz <pozzugno@gmail.com> - 2011-06-24 23:14 +0200
          Re: Query abt union John Gordon <gordon@panix.com> - 2011-06-24 21:37 +0000
            Re: Query abt union Shao Miller <sha0.miller@gmail.com> - 2011-06-26 14:28 -0500
          Re: Query abt union Keith Thompson <kst-u@mib.org> - 2011-06-24 14:56 -0700
            Re: Query abt union Edward Rutherford <edward.p.rutherford79@REMOVETHIS.gmail.com> - 2011-06-24 22:10 +0000
              Re: Query abt union Keith Thompson <kst-u@mib.org> - 2011-06-24 15:41 -0700
          Re: Query abt union pete <pfiland@mindspring.com> - 2011-06-25 10:33 -0400
            Re: Query abt union pete <pfiland@mindspring.com> - 2011-06-25 15:30 -0400
          Re: Query abt union Shao Miller <sha0.miller@gmail.com> - 2011-06-26 14:12 -0500
    Re: Query abt union Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2011-06-23 17:13 -0600

csiph-web