2018-08-17 :-|
_ 労
設計労をしました。
_ 昨日の C 言語のやつ
NUL 文字 '\0' のぶんが考慮されてないのでバッファオーバーランしますね。
strcpy() 関数は src が指す文字列を末尾のヌルバイト ('\0') も含めて dest が指すバッファーにコピーする。 二つの文字列は重なってはならない。受け側の文字列 dest は コピーを受け取るのに十分な大きさでなければならない。 バッファーオーバーランに気を付けること!
こうしないといけない。
strncpy(p->a, "012345678", sizeof(p->a) -1);
あるいは BSD なら strlcpy が使えます。
この関数は strncpy() と同様だが、 最大でも size-1 バイトしか dest にコピーをせず、 末尾への終端のヌルバイトの追加が必ず行われ、 宛先バッファー (の未使用部分) へのヌルバイトの書き込みが行われない。
[ツッコミを入れる]