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だね。
 +
 
=='''文字列連結'''==
 
=='''文字列連結'''==
 
*比較
 
*比較

2013年11月30日 (土) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス