C 文字列操作 新しいページはコチラ
提供: yonewiki
(→文字列長取得) |
(→文字列コピー) |
||
161行: | 161行: | ||
=='''文字列コピー'''== | =='''文字列コピー'''== | ||
+ | 文字列のコピー?なんでコピーするの?ってなりそうですけど、変数の代入みたいなものです。<br /> | ||
+ | 元の文字列はとっておいて、コピーした方を加工するということです。あるいはその逆。紙のコピーだと原版が綺麗だけど、原版もコピーも同じだから…<br /> | ||
+ | a=13;<br /> | ||
+ | b=a;<br /> | ||
+ | b=b*b;<br /> | ||
+ | b=a;<br /> | ||
+ | b=b*b*b;<br /> | ||
+ | ってな感じのことやったりしません?aの値は取っておきたい。そういうときに使ったりするのかなぁと思います。<br /> | ||
+ | リファレンスは以下のとおりです。<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/kk6xf663.aspx<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/td1esda9.aspx<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/xdsywd25.aspx<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/5dae5d43.aspx<br /> | ||
+ | また、例によってマルチバイト文字版strcpy、ワイド文字版wcscpy、マルチバイト2バイト文字認識版_mbscpy、セキュリティ強化版の_sサフィックスがあります。<br /> | ||
+ | _s無し版の引数は<br /> | ||
+ | コピー先文字列変数先頭char型アドレス、コピー元文字列変数先頭char型アドレス(文字列の終端に\0があること)<br /> | ||
+ | となっています。_mbscpyの引数は第一引数、第二引数共にunsigned charになっています。この微妙に使いにくい引数の異なり…。しょうがないのかなぁ。<br /> | ||
+ | <br /> | ||
+ | そして、_s版は第2引数にコピー先文字列変数先頭char型アドレスの大きさを必要とします。<br /> | ||
+ | strncpyのようにcpyの前にnが付くパターンでマルチバイト文字版、ワイド文字版、マルチ2バイト文字対応版と更には_lサフィックスでロケール個別設定ができる関数があります。<br /> | ||
+ | 全部で、<br /> | ||
+ | strcpy、wcscpy、_mbscpy , strcpy_s、wcscpy_s、_mbscpy_s ,<br /> | ||
+ | strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_l , strncpy_s、_strncpy_s_l、wcsncpy_s、_wcsncpy_s_l、_mbsncpy_s、_mbsncpy_s_l<br /> | ||
+ | これだけあります。<br /> | ||
+ | <br /> | ||
+ | で、結局は_tcsncpy_sを使いなさいってことになります。Unicode設定ならワイド文字版で、文字列長に厳しい設定が必要なwcsncpy_sだね。 | ||
+ | |||
=='''文字列連結'''== | =='''文字列連結'''== | ||
*比較 | *比較 |