今天一MM问我问题(C中关于浮点数输入),弄得我很无颜面,盼高手指教!!

toyjoy 2003-08-23 04:11:05
偶经过几十分钟的调试,最后确定问题如下:
struct a
{
float b;
};
void main()
{
int i;
struct a aaa[3];
for (i=0;i<3;i++)
{
scanf("%f",&aaa[i].b);
printf("\n%f\n",aaa[i].b);
}
}

上面这段代码在VC6.0,BCB5.0中编译运行通过,在Tc2.0,Tc3.0,Borland C++中编译没有错误,但运行时总报告下面的错误:
scanf : floating point formats not linked
Abnormal program termination

如果没有循环,一次一次的输入,可以正确运行。
如果没有结构体,aaa只是一个浮点数组,可以正确运行。
如果输入改成整数,可以正确运行。

所以上面的错误出现的条件有3个(必须):
1.循环(while没有试过)
2.结构体
3.浮点数输入(在循环里面且是关于结构体中元素的输入)

请大家帮帮忙,找出不能正确运行的原因。非常感谢!!

PS:我在C++中用cin输入可以正确运行。
...全文
42 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
toyjoy 2003-08-24
  • 打赏
  • 举报
回复
多谢楼上各位大哥的指点,小弟我再试试!

再次感谢!!
toyjoy 2003-08-24
  • 打赏
  • 举报
回复
多谢各位大哥的支持!!问题已经解决!!
grail0922 2003-08-24
  • 打赏
  • 举报
回复
是TC/BC编译器的问题
在VC中可以先用一个变量缓存一下:

float fTemp;
scanf("%f",&fTemp);
aaa[i].b=fTemp;
GhostAdz 2003-08-24
  • 打赏
  • 举报
回复
键盘缓冲区还有'\n'的残余
可是为什么运行是对的
cccbuiler 2003-08-24
  • 打赏
  • 举报
回复
这个程序没有问题
用dev-c 4.9.8编译可以通过
并没有发现有什么异常的问题
loveghb 2003-08-24
  • 打赏
  • 举报
回复
就是啊,这个问题有N个人问了。
是TC2.0的一个BUG。
:)
不是你的错!
antijpn 2003-08-24
  • 打赏
  • 举报
回复
完全没有问题,我用了BCB 5.5 Complier和TC2.0,结果完全一样,没有出现楼主所说的现象
Solosoul 2003-08-23
  • 打赏
  • 举报
回复
解决方法好象也就只能用楼上的方法。
结构中的浮点输入好象就存在这一问题。
njtu 2003-08-23
  • 打赏
  • 举报
回复
ark13() 说得没错。
使用一个临时变量就可以了。
ark13 2003-08-23
  • 打赏
  • 举报
回复
哈哈,n多人问过这个问题。TC/BC编译器的问题,别忙了没办法,可以先用一个变量缓存一下:

float fTemp;
scanf("%f",&fTemp);
aaa[i].b=fTemp;

wbh0360 2003-08-23
  • 打赏
  • 举报
回复
编译器的要求严格程度不同
iNothing 2003-08-23
  • 打赏
  • 举报
回复
1、这个可能是键盘缓冲区还有'\n'的残余,用flush(std)清理缓冲区,大概是这个函数,查查看吧
2、3一样,是TC的问题,以前好多人讨论,可以查查前面的帖子。解决办法是用中间变量绕过
float temp;
scanf("%f",&temp);
aaa[i].b=temp;

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧