Re: str{,l,n}cpy()
yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
> > 新城さんの考えは、たとえ strcpy の正しい使いかたを知ったとし
> > ても使うべきではない、というふうに思われるのですが、もしそう
> > なら理由を教えてもらえませんか?
>
> strcpy() を使った方がよい局面というのが、なかなか出てこない
> ので、「strcpy()使うな」でいいんじゃないか、ということです。
そういうことでしたか。ちょっと残念。
> 何か「こういう時には strcpy() がいい」という状況はありますか?
コピー先のサイズが分らない場合は strcpy() がいいです。:-P
ということじゃなくて、もともとの話の流れの buffer overflow
を防ぐために strcpy や strcat を使わせないようにするにはどう
したらいいかという話での、strcpy がいい状況ってことですよね。
たぶんないんじゃないでしょうか。strlcpy なり snprintf ででき
ますし。
ただ、「strcpy() で十分」という状況は多々あると思うわけで、
そんな時にも「strcpy()使うな」っていやだなぁと。
P.S.
そういや strncpy は構造体のメンバにセットする時便利だっての
を思い出しました。
struct {
char s[128];
} s1, s2;
strncpy(s1.s, "abc", sizeof(s1.s));
strncpy(s2.s, "abc", sizeof(s2.s));
if (memcmp(&s1, &s2, sizeof(s1)) == 0) {
puts("便利!");
}
--
01/17 10:50頃
水戸
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735