atofの逆の変換ftoaの作り方を教えてください。あるいは参考になるページを教えてください。
#include <stdio.h>
void ftoa(char *string, double f, int figure)
{
sprintf(string, "%.*f", figure, f);
}
main()
{
char str[10];
ftoa(str, 0.3532, 4);
puts(str);
}
関数ftoaの部分はネット上で見つけたもので、このように書けば4行ですむらしいのですがどうも実行結果は
0.123400
というふうに4桁に指定しているのに6桁ででてきてしまいます(私の使っているコンピュータでは)。main関数は私が描いたのですが、まずいところがあったら教えてください。ちなみに私はsprintfの使い方がわかっていません。
No.3ベストアンサー
- 回答日時:
プログラムを見る限りおかしそうなところは無いので、小数点以下が4桁で出るはずです。
どこかにタイプミスか勘違いがあるのでしょう。落ち着いて見直してみてください。あるいは、本当にここに書いたプログラムのままですか?省略して載せてません?
>これはatofの逆の変換ftoaを作れという課題なのですがこれをこのまま出すととまずいでしょうか。
そもそも自分で意味を理解していないものを出してはまずいでしょう。理解したとして、sprintfを使うのが課題の意図に合っているかどうかは、課題の前提となる講義があるはずで、講義の流れに沿ってないとすると駄目でしょうし、合っていればOKでしょう。
>sprintfの引数の"%*f"とはどういう意味なのでしょうか
sprintf(s,"%10.5f",v) と sprintf(s,"%*.*f",10,5,v)が同じ結果になるといえば分かりますか?
ご指摘のとおり、学校のほうでは"%.*f"を"%*f"と打ってしまっていました。
>sprintf(s,"%10.5f",v) と sprintf(s,"%*.*f",10,5,v)が同じ結果になるといえば分かりますか?
確かにこう書いていただけるとわかりやすいですね。ありがとうございました。
No.2
- 回答日時:
sprintfはprintfでモニタに表示されるはずの文字列を
そっくりコピーできるものです。
sprintfを使うならftoaの関数を作ることはあまり
意味がありません。(itoa等も同じ)
int書き込みバイト数 = sprintf(char *格納先,const char 出力書式文字列,...);
d=0.00001;
rtn=sprintf(str,"%f",d);
これでstrに"0.00001"が格納されていると思います。
4桁にしたいなら
d=0.0001;
rtn=sprintf(str,"%1.4f",d);
としてもいいし
strの文字列を探索して
"."から数えて+5つめの位置にNULL文字をいれてもいいかと思います。
この回答への補足
上記の「私の使っているコンピュータ」は学校のコンピュータなのでそれで動くか今確認することはできませんが、家のコンピュータでは
#include <stdio.h>
void ftoa(char *string, double f)
{
sprintf(string, "%1.8f", f);
}
main()
{
char str[10];
ftoa(str, 0.3532);
puts(str);
}
としたところ
0.35320000
となりました。自分で書いててわかってないのですがsprintfの引数の"%*f"とはどういう意味なのでしょうか。また、これはatofの逆の変換ftoaを作れという課題なのですがこれをこのまま出すととまずいでしょうか。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
double型の値をchar配列に変換する方法はありますか?
C言語・C++・C#
-
小数点入りの文字列をfloat型に変換
C言語・C++・C#
-
ftoa関数の作成
C言語・C++・C#
-
-
4
#define _CRT_SECURE_NO_WARNINGS について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の入力した文字を反転させ...
-
fgetsなどのときのstdinのバッ...
-
sprintfに同じ変数は使えるか
-
C言語のfor文です。 繰り返しの...
-
CStringをwchar_tに変換したい
-
文字列から空白を取り除きたい...
-
c言語配列の結合についてです。...
-
atoi( ) の反対をやりたい
-
_TCHAR*での引数の読み込み
-
charでの計算?
-
文字列からバイナリ変換
-
'const char *' 型は 'char *' ...
-
pingの結果を取得する方法
-
配列をnビットシフトする
-
WORDをcharに変換する方法
-
テキストデータをそのままバイ...
-
文字列配列のほしい部分だけを...
-
データの取得をしたいのですが…
-
下記のプログラムがコンパイラ...
-
C言語です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
charでの計算?
-
文字列から空白を取り除きたい...
-
CStringをwchar_tに変換したい
-
C言語のfor文です。 繰り返しの...
-
charからLPTSTRへの変換方法
-
fgetsなどのときのstdinのバッ...
-
'const char *' 型は 'char *' ...
-
間接参照のレベルが異なっています
-
double型の値をchar配列に変換...
-
atoi( ) の反対をやりたい
-
間接操作のレベルとは
-
ネットワークにつながっている...
-
型変換
-
テキストデータをそのままバイ...
-
文字列ポインタを結合
-
3桁区切(コンマ)記号をつけ...
-
C言語です
-
Win32APIでのエディットボック...
-
TCHAR文字列?の特定部分の数字...
-
絶対パスからのファイル名の切...
おすすめ情報