广陵绝唱 发表于 2008-7-11 15:03

结构体中浮点数输入问题(真心回答者请进,换编译器者不必回帖)

~~~~~~~~~~~~~~~~~~
    最近编了个结构体程序(win-tc),发现输入浮点数时会出错,在网上搜了几个解决方法,不能奏效。后来我发现,把scanf("%f",&a[i].x[j]);改为scanf("%.2f",&a[i].x[j]); 程序就可以运行下去了,但程序输出时就出现错误,全是0。00。

    网上查了一下,发现有人用vc也会出现类似的问题。

    期望众位能帮助解决一下,谢谢。

Knocker 发表于 2008-7-11 15:09

float *PFloat,nFloat = 0.001;
PFloat = &nFloat;

VxWorks 发表于 2008-7-11 15:25

[em09]

Knocker 发表于 2008-7-11 15:49

[em06]

水中无月 发表于 2008-7-11 17:01

float *PFloat,nFloat = 0.001;
PFloat = &nFloat;
这有什么意义呢?
0.001后面加个“f”即0.001f可以保留浮点的精度

Knocker 发表于 2008-7-11 17:18

楼上MM[em16]

水中无月 发表于 2008-7-11 17:29

LS是本论坛的元老?好厉害啊

Knocker 发表于 2008-7-11 17:33

我本论坛泡妞元老[em12]

水中无月 发表于 2008-7-11 17:36

[em10]
看得出来,你的确是本论坛一风流人物……

cosdos 发表于 2008-7-11 17:43

double 使用 %lf
float 使用 %f

mqh21364 发表于 2008-7-11 17:47

不知道广陵写的结构体是什么样子,我试着模仿了一下:
[code]
#include <stdio.h>
#define M 2

typedef struct
{
        float f[M];
}Test;

int main(void)
{
        Test t[M];
        int i, j;
       
        for (i = 0; i < M; i++)
        {
                for(j = 0; j < M; j++)
                {
                        scanf("%f", &t[i].f[j]);
                }
        }
       
        for (i = 0; i < M; i++)
        {
                for(j = 0; j < M; j++)
                {
                        printf("%10f", t[i].f[j]);
                }
        }
       
        return 0;
}

[/code]

我这个是可以运行的。我用的是MinGW。

cosdos 发表于 2008-7-11 18:12

double 使用 %lf
float 使用 %f

------------------------

再补充一句,TC 3.1 前的版本有浮点数BUG // 一本书上看到的

菜鸟选手 发表于 2008-7-11 18:21

你们继续谈论WIN_TC,好让我学习下WIN_TC
...~
       up![tk10] [tk10]

[[it] 本帖最后由 菜鸟选手 于 2008-7-11 18:24 编辑 [/it]]

VxWorks 发表于 2008-7-11 18:55

土软件的土bug

水中无月 发表于 2008-7-11 19:05

[quote][bo][un]VxWorks[/un] 在 2008-7-11 18:55 的发言:[/bo]

土软件的土bug [/quote]

恩,TC是老土了。
现在我都用VS.net了

菜鸟选手 发表于 2008-7-11 19:29

LS的是霉女否?

水中无月 发表于 2008-7-11 19:37

???

mqh21364 发表于 2008-7-11 20:49

美女么?[tk03]

水中无月 发表于 2008-7-11 20:52

[em09] mqh21364怎么跑来C区来玩啊?

liyanhong 发表于 2008-7-12 11:44

钓鱼[em09]

页: [1] 2

编程论坛