掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.28773

double 型をchar*型にするには?
投稿者---まかープログラミング初心者(2006/11/08 21:46:19)


3度目の投稿です。何度もすみませんm(_ _)m
自力でググって見ましたが、解決方法が見つからないので、
またココにて質問をさせていただきます。
今の所、型を変更する方法はキャストと、教えてもらったvoidの方法しか知りません。
ですが、doubleをchar*にするのはキャストでは出来ないみたいです。(逆は可能…)
どなたか方法を知っている人がおられたら、ご教授お願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:double 型をchar*型にするには? 28774 yoh2 2006/11/08 21:57:37


No.28774

Re:double 型をchar*型にするには?
投稿者---yoh2(2006/11/08 21:57:37)


割とFAQ的な質問かな、と思ったのですが、

>ですが、doubleをchar*にするのはキャストでは出来ないみたいです。(逆は可能…)

この、"(逆は可能…)"が引っかかって、何をしたいのかよく分からなくなりました。

doubleを文字列に変換するならsprintf()ですが、この逆(文字列→double)はatof()かstrtod()を
使わなければならず、キャストでは行えませんし。
かといって、単にchar*をdoubleにキャストして(またはその逆)うれしい用途が思い付きません。

どのような動作が望みなのか、もう少し詳しく説明してくれたらアドバイスができるかもしれません。


この投稿にコメントする

削除パスワード

No.28779

Re:double 型をchar*型にするには?
投稿者---まかープログラミング初心者(2006/11/09 23:02:47)


>>ですが、doubleをchar*にするのはキャストでは出来ないみたいです。(逆は可能…)
言葉のあやと言うか逆という表現が誤解を招きました…
逆というのは
>>この逆(文字列→double)はatof()かstrtod()を
で、まさにその事を指したつもりでした。

そして、本題に入りますが具体的にやりたい事を示すと、
アプリケーションでユーザーがテキストボックスで入力した文字列(パスカル)を習得
→習得した文字列をC言語のchar*に変換
→変換した文字や数字をC言語を利用し、計算、処理する。
→処理した結果を再びパスカル文字列に変更
→そのパスカル文字列をアプリケーションに表示
と、言った流れです。
この方法で自分なりにアプリケーションのプログラムを作ろうと思っているのです。
ところでsprinfを利用してdoubleをchar*に変える方法は具体的にどうやればいいのですか?
プロトタイプを調べた所、
int sprinf(char *dst, const char* format, ...)
となっています。これにdoubleをどうやって反映させればいいんですか?
初心者というのは言い訳になりますが、どうかご教授をお願いしますm(_ _)m


この投稿にコメントする

削除パスワード

No.28780

Re:double 型をchar*型にするには?
投稿者---Blue(2006/11/09 23:08:55)


>ところでsprinfを利用してdoubleをchar*に変える方法は具体的にどうやればいいのですか?

http://www9.plala.or.jp/sgwr-t/lib/sprintf.html
上のリンクはこのサイトのコンテンツです。
(ホームページ→▼Cのふろくのライブラリ関数一覧からたどり着けます。)


この投稿にコメントする

削除パスワード

No.28794

Re:double 型をchar*型にするには?
投稿者---まかープログラミング初心者(2006/11/10 18:09:14)


ありがとうございます!おかげさまで使い方が分かりました。
後は文字化けをなんとか出来ればスランプ期間終了って感じですw
まあ、文字化けの方は処理系依存っぽいので、後は自分で探したり、
マックのプログラマーの人達に聞く事にします。(かなり希少だと思われますがw)


この投稿にコメントする

削除パスワード

No.28782

Re:double 型をchar*型にするには?
投稿者---かずま(2006/11/10 11:22:41)


> そして、本題に入りますが具体的にやりたい事を示すと、
> アプリケーションでユーザーがテキストボックスで入力した文字列(パスカル)を習得

辞書で「習得」と「取得」の意味を調べてみてください。

次のプログラムが何をしているか説明できますか?
#include <stdio.h>
#include <stdlib.h>

void print_pstr(const char *pstr)
{
    int i, n = pstr[0] & 0xff;
    printf("%d:", n);
    for (i = 1; i <= n; i++) putchar(pstr[i]);
    putchar('\n');
}

void pstr2cstr(const char *pstr, char *cstr)
{
    int i, n = pstr[0];
    for (i = 0; i < n; i++) cstr[i] = pstr[i+1];
    cstr[i] = '\0';
}

void cstr2pstr(const char *cstr, char *pstr)
{

    int i;
    for (i = 0; cstr[i]; i++) pstr[i+1] = cstr[i];
    pstr[0] = i;
}

int main(void)
{
    char pstr1[] = { 5, '1', '2', '.', '3', '4' };
    char pstr2[256], cstr1[256], cstr2[256];
    double d1, d2;

    print_pstr(pstr1);
    pstr2cstr(pstr1, cstr1);
    printf("cstr1='%s'\n", cstr1);
    d1 = strtod(cstr1, NULL);
    d2 = d1 * 13.7 + 34.56;
    sprintf(cstr2, "%g", d2);
    printf("cstr2='%s'\n", cstr2);
    cstr2pstr(cstr2, pstr2);
    print_pstr(pstr2);
    return 0;
}



この投稿にコメントする

削除パスワード

No.28783

Re:double 型をchar*型にするには?
投稿者---かずま(2006/11/10 12:36:34)


訂正
>   int i, n = pstr[0];

    int i, n = pstr[0] & 0xff;  // pstr2cstr() の中

>   sprintf(cstr2, "%g", d2);

    sprintf(cstr2, "%.16g", d2);



この投稿にコメントする

削除パスワード

No.28795

Re:double 型をchar*型にするには?
投稿者---まかープログラミング初心者(2006/11/10 18:54:35)


すみません…。収得のつもりで書き込みましたが、想いっきり「習得」になってますねw
あまり読み返さないで書き込んでしまうので、変換ミスとかが多いのです…

パッと見て& 0xffのアドレス宣言とかがよくわかりませんが、
高度で且つ構造はシンプルな感じで素晴らしい!
なんというか、p2cstrやc2psterを自作で作った感じで、
文字列の長さだけ文字を代入し、pstr2cstrの方は最後に空白
cstr2pstrの方には最後、先頭に文字列の長さを表す数を代入。
mainの方はpstr1[]がパスカルタイプの文字列、
pstr2[256]がマックで言うStr255の文字列で、
print_pstrでpstr1の長さだけ文字を出力、
pstr1を自作関数を使い,cstr1のC言語文字列に変換し、
printfで出力ーーーー
と、まさに自分がやりたい事をC言語の許容範囲内で実現しているのが分かります。
doubleをchar*に直すのにsprintfを使うと言うテクを教えてもらったので、
自分のやり方でやってますが、何故か文字化けと言う不具合が出るので、
いざという時はかずまさんが用意したものを勝手に使わせてもらいますw
今の所、作ってるアプリはまだ未完成ですが、出来上がったらソースを公開したいとおもいます。
ついては、その時にまたお世話になるかも知れませんw
なんせ、自分が作ってるプログラムは自分では見やすいのですが、
客観的に見ると複雑で分かりにくいとよく指摘されるので…。
兎に角わざわざ一例まで用意してくれてありがとうございましたm(_ _)m


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧