[H8-ML(2137)] Re: 型変換に関して
From: FUJIHARA Keiichi <keiichi@xxxxxxxxxxxxx>
Date: 2002年08月12日(月)09時27分41秒
 藤原と申します。

This message is reply to siro - san
(Subject was : [H8-ML(2132)] 型変換に関して)

Message-ID: <005301c2415e$4c9faf60$0200a8c0@sirobd009wepk7>
in Mon, 12 Aug 2002 02:41:17 +0900 ...

> int型からchar型に変換する方法が判りません。
> たとえばintの123を文字型の123に変換する方法です。
> 関数でintTostrのような関数が有ればと思いヘッダーを見て見たのですが
> 無いようでした。

 これは、int -> char への変換ではなくて、数値を文字列(だったら、
char の配列ですね)に変換すると言うことでしょうか?

 普通の(パソコンレベルの)C言語であれば、sprintf を使うのが普通です。
 たとえば、

char buff[16];
int  i = 123;
sprintf(buff, "%d", i);

 で、buff の先頭から、"123" が格納されます。
 メモリ etc. に余裕があれば、この方法が楽で、柔軟性もあります。

 ただし、sprintf に限らず、printf 系の関数はメモリを大量に消費する
ので(ちなみに、組込用のコンパイラだと、標準的な IO がないので、
printf が提供されないことも多いのですが、sprintf は大抵あります)
使えない場合が多いのですが。

 sprinf が使えない場合は、自作しましょう。

void toStr(int dat, char *ptr, int keta)
{
  int i;
  
  for (i = 0; i < keta; i++)
  {
     ptr[keta - i - 1] = (dat % 10) + '0';
     dat /= 10;
  }

  /* 先行する0をスペースに置き換える */
  for (i = 0; ptr[i] == '0' && i < keta - 1; i++)
     ptr[i] = ' ';

}

 char buff[16];
 int i = 123;

 toStr(i, &buff[0], 4);

 とすると、4桁で、buff[0] から、" 123" という文字列に変換されます。

-- 
_/ -- Last 17585 hours until ATHENS 2004 Olympic Games (12 Aug @047) -
_/ FUJIHARA Keiichi
_/ E-Mail : keiichi@xxxxxxxxxxxxx <or> nagi@xxxxxxxxxxxxxxx
_/ URL    : http://www.keiichi.fujihara.name/
--------------------------------------------+----- Luna Phase  3.66 --
PGP FingerPrint = 7CC3 4F95 8CC7 87D3 7178  C348 CD65 7F08 D68F 69F6


スレッド概略
[2132(R)](起点)
 └[表示中]
   └[2143(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]