| From(投稿者): | mihogaoka2001@yahoo.com (miho) |
|---|---|
| Newsgroups(投稿グループ): | fj.comp.lang.c |
| Subject(見出し): | Re: str{,l,n}cpy() |
| Date(投稿日時): | 16 Jan 2004 19:28:52 -0800 |
| Organization(所属): | http://groups.google.com |
| References(祖先記事, 一番最後が直親): | (G) <86wu822g18.wl@xh6.cc.hokudai.ac.jp> |
| (G) <YAS.04Jan9214824@kirk.is.tsukuba.ac.jp> | |
| (G) <m3ad4wl1yq.fsf@kzin.dip.jp> | |
| (G) <YAS.04Jan12063406@kirk.is.tsukuba.ac.jp> | |
| (G) <m31xq69bk5.fsf@kzin.dip.jp> | |
| (G) <YAS.04Jan14033858@kirk.is.tsukuba.ac.jp> | |
| (G) <bu32qh$qmo$1@caraway.media.kyoto-u.ac.jp> | |
| (G) <bu4io3$63j$1@caraway.media.kyoto-u.ac.jp> | |
| Message-ID(記事識別符号): | (G) <6500ebba.0401161928.44411db1@posting.google.com> |
| Followuped-by(子記事): | (G) <buacbi$5rn$1@caraway.media.kyoto-u.ac.jp> |
| (G) <bufc0f$b82$1@caraway.media.kyoto-u.ac.jp> |
> > > void copy(char *dst, char *src, size_t n)
> > > {
> > > size_t l = strlen(src);
> > > if( l > n-1 )
> > > l = n-1 ;
> > > memcpy(dst,src,l);
> > > dst[l] = 0;
> > > }
> 蛇足ですが,上の例では,文字列のコピーだけ考えるなら
> memcpy(dst,src,n);
> dst[n] = 0;
> で用はなすように思います。dst[l] = 0は保証されているから。
でも,そうすると, memcpy が src の(配列としての)最後を超えて
アクセスすることがあり得ます.その場合,結果は未定義になりますね.