• ベストアンサー

C言語でchar配列の追加

C言語について質問させていただきます. unsigned char send_data[]; 上記の配列の double d1 = 15.23; double d2 = 14.21; double d3 = 20.56; 上記3つのdouble変数を間に , を入れて連結して代入したいと考えています. 結果はsend_data = "15.23,14.21,20.56"となってほしいです. ポインターなどを使用すれば上記は実現できますでしょうか? お分かりになられる方がいらっしゃいましたら,何卒ご教授よろしくお願い致します.

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

  • ベストアンサー
  • maiko0333
  • ベストアンサー率19% (839/4401)
回答No.2

double d1 = 15.23; double d2 = 14.21; double d3 = 20.56; まず、小数点以下は2進数では表せません。 #include <stdio.h> #include <stdlib.h> void main() { unsigned char *send_data; double d1 = 15.23; double d2 = 14.21; double d3 = 20.56; send_data = (unsigned char*)malloc(sizeof(char)*100); sprintf(send_data,"%f4.2,%f4.2,%f4.2",d1,d2,d3); printf("%s",send_data); } 結果は 15.2300004.2,14.2100004.2,20.5600004.2 こうなります。

con014057
質問者

お礼

ご回答ありがとうございます. ご提示いただいたコードでほぼ,所望の結果を得ることができました. ただ,コンパイラの違いなのか,unsigned char *send_dataではエラーが出たため, unsigned char send_data[]に変更し,mallocをなくして実行すると問題なく動作致しました. ありがとうございました.

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

unsigned char send_data[32]など、 send_dataが"15.23,14.21,20.56"を設定できるだけの領域確保されているならできます。 sprintfやsnprintfを調べてみてください。

con014057
質問者

お礼

ご回答ありがとうございます. sprintfを用いて動作するようになりました.

関連するQ&A