• ベストアンサー

配列への文字列の追加ってどうやって追加するの?

配列に文字列をいれたいのですが char a[100]; sprintf(a,"AB"); と書くと a[0]にAが a[1]にBが a[2]に\0が格納されますよね。 「配列に一度格納された文字列に新たな文字列を追加」したいのです。 つまり この\0を上書きしてa[2]から CD を追加し、結果 a[0]にAが a[1]にBが a[2]にCが a[3]にDが a[4]に\0が 格納されているようにしたいのです。 半角英数だったらできるのですが全角だとどうやるのでしょうか。 やりたい事は以下のようなものです。 "あい"を1度目の処理で配列に文字列を格納し、次の処理で"うえ"を追加し、 配列aをprintfするとき「あいうえ」が出力されるようにしたいのです。 どなたか教えてください(>_<

質問者が選んだベストアンサー

  • ベストアンサー
noname#16765
noname#16765
回答No.1

string.hにstrcat(連結先文字列,連結文字)があります。

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> 半角英数だったらできるのですが全角だとどうやるのでしょうか。 全角かどうかではなく、多バイト文字かどうかが重要ですね。 シフトJISやEUC-JPやUTF-8なんかであれば、特に何も気にしなくても strcat や strncat を使えば連結できます。厄介なのは、ISO-2022のように、シフトシーケンスに依存する文字コードを使う場合ですが、とりあえず今回は書きません。シフトシーケンスを考慮しないといけないのであれば、改めて質問してください。 質問の趣旨が、配列の何番目かを直接指定して書き込みたいという点にあるのなら、元の文字列書き込む際に sizeof で調べておくか、後から strlen で調べるかのどちらかです。 もう一つ、ワイド文字を使うという方法もあります。これなら、基本的には1文字1要素にできる(場合が多い)ので、多バイト文字を意識しなくてもよいと思います。

関連するQ&A