• ベストアンサー

C言語での文字の連結

こんにちは。 C言語で困っているので、どなたかご教示お願いいたします。 char buff[16]に「東京」(JIS)という文字の16進表示の文字列が格納されており、 その先頭にJISコードの始まりである = 1B2442(0x1B2442) をつけたいのですが、 連結の仕方がわかりません。 最終的に使いたいのはJISコードの始まりが連結されたbuffです。 すみませんが、教えてください!

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

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.1

こんな感じでいかがでしょう。 memmove( buff + 3, buff, sizeof buff - 3 ); memcpy( buff, "\x1b\x24\x42", 3 ); 連結と言うよりは、後方にシフトして先頭3バイトを書き換える形です。 さらに末尾にASCIIモードに戻すESCシーケンスを追加する場合には、 strcat( buff, "\x1b\x28\x42" ); こんな感じでできます。 ※buff のサイズは無視しています。

noname#229153
質問者

お礼

回答ありがとうございます!!後方にシフトする考えは全く思いつきませんでした。。ぜひ試してみます。ところで、memcpyには"0x"はいらないのでしょうか?知識不足で申し訳ございませんが、教えてください。

その他の回答 (2)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

ANo.2のboss_3rdさん、その回答はあんまりです。 char buff2[3] = 0x1B2442;の部分はコンパイルエラーになりますし、3バイト分しか確保していないbuff2[]に"東京"の文字列をstrcat()したらオーバーランします。

  • boss_3rd
  • ベストアンサー率0% (0/1)
回答No.2

char buff2[3] = 0x1B2442; strcat(buff2,buff); buff = buff2; とかではいけませんかね?

関連するQ&A