偶经过几十分钟的调试,最后确定问题如下:
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.循环
2.结构体
3.浮点数输入
请大家帮帮忙,找出不能正确运行的原因。非常感谢!!
PS:我在C++中用cin输入可以正确运行。
1、这个可能是键盘缓冲区还有\n的残余,用flush(std)清理缓冲区,大概是这个函数,查查看吧
2、3一样,是TC的问题,以前好多人讨论,可以查查前面的帖子。解决办法是用中间变量绕过
float temp;
scanf("%f",&temp);
aaa[i].b=temp;
编译器的要求严格程度不同
哈哈,n多人问过这个问题。TC/BC编译器的问题,别忙了没办法,可以先用一个变量缓存一下:
float fTemp;
scanf("%f",&fTemp);
aaa[i].b=fTemp;
ark13() 说得没错。
使用一个临时变量就可以了。
解决方法好象也就只能用楼上的方法。
结构中的浮点输入好象就存在这一问题。
完全没有问题,我用了BCB 5.5 Complier和TC2.0,结果完全一样,没有出现楼主所说的现象
就是啊,这个问题有N个人问了。
是TC2.0的一个BUG。
:)
不是你的错!
这个程序没有问题
用dev-c 4.9.8编译可以通过
并没有发现有什么异常的问题