いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

sprintfの時代は終わりなのか?

C言語入門書にはまず書いてある sprintf。そして strcat や strcpy などは、文字列操作をする時に使われる事でしょう。
(「std::string の add とか += つかってるよ」とか、そんなこと言う人嫌いです。)

ですが、これら関数はバッファオーバーランの危険性が強い関数なので、あまり使わない方が良いんですよねー。 ちょっとした間違いで、いとも簡単に確保したバッファ以上の領域に書き込んでしまいますからね。
…ただ、入門書とかで使ってきた分浸透が強いためか、使いやすいためか、結局使っちゃうんですけど。(ぉ


しかしながら、いよいよ本格的に切り替えの時期にきたような感じです。
VC7で <strsafe.h> が追加されたことにより、include しただけで 標準文字列操作関数が利用不可になり 「新しい関数使えや!」 と警告を発してくれる時代になりました。^^;
(Dx9SDK Feb05 は標準で include されてるようで、strcat とか使えない模様(?) )

で、新しい操作関数として StringCbPrintf / StringCchPrintf 等があります。 今後はこれら関数を使っていった方が良いのかもしれません。


…とはいえ、これらがまた若干頭の痛い問題を出してくる訳で……
<< つづく... >>