ショッピングモール  Operating Systems / Microsoft ( Windows CE )


掲示板利用宣言

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

 私は

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

掲示板1

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

No.5135

ファイルからの小数点の出力
投稿者---マサ(2005/12/28 12:10:18)


テキストファイルの内容を出力するプログラムを作っているのですが、小数点が0.0と表示されてしまいます。
文字や整数は問題ないのですが、どういうことなのでしょうか?


#include<stdio.h>

int main (void)
{
    int a,c,d;
    double  b;
    
    FILE *file;       
    
    file=fopen("test.txt","r");   
    
    fscanf(file,"%s%f%d%d",a,&b,&c,&d); 
                                        
    fclose(file);                  
    
    printf("%s %2.1f %d %d",a,b,c,d);   
    return 0;

}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイルからの小数点の出力 5136 まきじ 2005/12/28 12:27:08
<子記事> Re:ファイルからの小数点の出力 5141 si 2005/12/28 14:15:07
<子記事> ありがとうございました!! 5147 マサ 2005/12/28 15:47:13


No.5136

Re:ファイルからの小数点の出力
投稿者---まきじ(2005/12/28 12:27:08)


>printf("%s %2.1f %d %d",a,b,c,d);

%f だからです。


この投稿にコメントする

削除パスワード

No.5137

Re:ファイルからの小数点の出力
投稿者---マサ(2005/12/28 13:09:32)


>>printf("%s %2.1f %d %d",a,b,c,d);
>
>%f だからです。

%fは小数点を出力すると思っていたのですが、違うのでしょうか?
理解が悪くてすみません。


この投稿にコメントする

削除パスワード

No.5138

Re:ファイルからの小数点の出力
投稿者---RAPT(2005/12/28 13:13:55)


>%fは小数点を出力すると思っていたのですが、違うのでしょうか?
違います。%fは「小数点」ではなく、「小数」を表現する書式です。
で、一体どう表示したいのでしょうか。



この投稿にコメントする

削除パスワード

No.5139

Re:ファイルからの小数点の出力
投稿者---REE(2005/12/28 13:13:59)


>%fは小数点を出力すると思っていたのですが、違うのでしょうか?
>理解が悪くてすみません。

%fは浮動小数(doubleなど)を表示する指定です。
あなたは、どう出るのを期待していたのですか?


この投稿にコメントする

削除パスワード

No.5140

テキストの中身
投稿者---マサ(2005/12/28 14:11:48)


文字、小数、整数をファイルから読み込むことを目的に作りました。


テキストファイルの中身は

test 35.1 179 72

となっていますが、実際に出力されるのは

test 0.0 179 72

となっており、3.5と出力されるところが0.0となっている問題を解決したく、投稿しました。
判りにくくて申し訳ありません


この投稿にコメントする

削除パスワード

No.5142

Re:テキストの中身
投稿者---まきじ(2005/12/28 14:28:54)


>test 35.1 179 72
>fscanf(file,"%s%f%d%d",a,&b,&c,&d);

35.1 を読み込むには %f だけで良い。
35 と小数点と 1 に分ける必要はないです。


この投稿にコメントする

削除パスワード

No.5143

Re:テキストの中身
投稿者---マサ(2005/12/28 14:44:29)


%2.1fから%fに変更してみましたが、

test 0.000000 179 72

と表示されて

test 35.1 179 72

にはなりませんでした。何か追加の処理が必要なのでしょうか?



この投稿にコメントする

削除パスワード

No.5144

Re:テキストの中身
投稿者---まきじ(2005/12/28 15:02:42)


>%2.1fから%fに変更してみましたが、
>test 0.000000 179 72
>fscanf(file,"%s%f%d%d",a,&b,&c,&d);

%s で何が読み込まれるか?
%f で何が読み込まれるか?
%d で何が読み込まれるか?

判りますか?

# 適当に修正して「できませんでした」では困ります。


この投稿にコメントする

削除パスワード

No.5145

Re:テキストの中身
投稿者---マサ(2005/12/28 15:29:36)


>>%2.1fから%fに変更してみましたが、
>>test 0.000000 179 72
>>fscanf(file,"%s%f%d%d",a,&b,&c,&d);
>
>%s で何が読み込まれるか?
>%f で何が読み込まれるか?
>%d で何が読み込まれるか?
>
>判りますか?
>
># 適当に修正して「できませんでした」では困ります。


%sで文字列test、%fで小数35.1、%dで整数179、もうひとつの%dで72ですよね。
文字列は変数aに、2つの整数はcとdに入っています。
小数はdouble型の変数bに入ります。

そして
printf("%s %f %d %d",a,b,c,d);
で文字列、小数、整数、整数で出力します。

こういう様に理解してますが、小数だけが思った数字が出てこないのです。


この投稿にコメントする

削除パスワード

No.5146

Re:テキストの中身
投稿者---まきじ(2005/12/28 15:37:48)


>%sで文字列test、%fで小数35.1、%dで整数179、もうひとつの%dで72ですよね。

"test" もファイルの内容だったのね(^^;
なら si さん指摘されいる様に a の型がおかしいです。


この投稿にコメントする

削除パスワード

No.5141

Re:ファイルからの小数点の出力
投稿者---si(2005/12/28 14:15:07)


 int a,c,d;<- char a[??];
 fscanf(file,"%s%f%d%d",a,&b,&c,&d);<- %lf


この投稿にコメントする

削除パスワード

No.5147

ありがとうございました!!
投稿者---マサ(2005/12/28 15:47:13)


int型だった"a"をchar型の配列に変更し、"%f"を"%lf"に変更したところ、問題なく表示されました。
ようやく何が悪かったのかが分かりました。
長々とお付き合い頂き、有難うございました!!


この投稿にコメントする

削除パスワード

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




掲示板提供:Real Integrity