strcpy, strncpy, strcat, strncat

Daniel R. Levy levy at ttrdc.UUCP
Mon Sep 1 09:28:33 AEST 1986

In article <6632 at sun.uucp>, guy at sun.UUCP writes:
>>      It seems odd that "strncat" always adds a trailing '\0'
>> but "strncpy" does not.
>It may be considered odd, but that's the way UNIX works.
THE UNIX(trademark of AT&T) SYSTEM

>(If you want a version of "strncpy" that copies a
>null-or-end-of-buffer-terminated string to a null-terminated string, clear
>out the null-terminated string and "strcat" the other string to it.)

1) Surely, "strncat()" was meant here.  "strcat()" expects a null-terminated
   string as input, whereas "strncat()" accepts a maximum count.

2) Why "clear out" the null-terminated string (better, "buffer") to be
   copied to?  Just null its first character (at least under UNIX(tm)
   System V this works with strncat(), dunno about Berzerkeley).

3) Better yet, if one is obsessed over performance (avoiding the check for the
   length of the string in the destination buffer), write one's own routine
   for this and include it in one's source code.  The routine would likely be
   under 10 lines long.  Or make it a macro.  The UNIX(tm) system doesn't
   promise to provide the kitchen sink ready-made, rather, it furnishes
   the tools to construct it with.  Use them.

4) I kind of doubt that Guy will ever read these comments, at least not
   unless someone else quotes them (I think my name/site is in his kill file).
   But comments from others as to whether I have truly caught some things
   that Guy has omitted/missed/forgotten would be welcome.

>	Guy Harris
>	{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
>	guy at (or guy at

Dan at the "Deathstar"
 -------------------------------    Disclaimer:  The views contained herein are
|       dan levy | yvel nad      |  my own and are not at all those of my em-
|         an engihacker @        |  ployer or the administrator of any computer
| at&t computer systems division |  upon which I may hack.
|        skokie, illinois        |
 --------------------------------   Path: ..!{akgua,homxb,ihnp4,ltuxa,mvuxa,
	   go for it!  			allegra,ulysses,vax135}!ttrdc!levy

More information about the Comp.lang.c mailing list