关于网友提出的“ 无法正常输入数据给结构体成员”问题疑问,本网通过在网上对“ 无法正常输入数据给结构体成员”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 无法正常输入数据给结构体成员
描述: 在学校机房 练程序 写一个学生信息管理的程序,vc++6.0运行一切正常 由于有些东西没完善 跑到网吧继续些。
用tc++3.0
我截取无法执行的那部分如下
在学校用vc++6.0好好的,这死活无法执行
执行后屏幕上就是
scanf:floating point formats not linked
abnormal program termination
麻烦大家帮忙看下谢谢
#include
#include
#define LENGTH 3
struct student
{
float score[3];
}stud[LENGTH];
void save(void)
{
int i,j;
for(i=0;i<>
{
for(j=0;j<>
{
scanf("%f",&stud[i].score[j]);
printf("\n%.2f",stud[i].score[j]);
}
}
}
void main(void)
{
save();
}
解决方案1: 浮点数模块没有加载,下面是我在网上找的:
--这是tc2.0的scanf函数的一个BUG,编译的时候没有错误,一运行就会出现
scanf : floating point formats not linked
Abnormal program termination
原因是这样的,过去的计算机资源可不象现在这么丰富,内存动不动就几百兆,以前dos的常规内存只有640k,内存的使用是非常紧张的,因此tc2.0对于不使用浮点的程序,是不加载浮点处理模块的,但是,scanf函数并没有很好地检测用户使用浮点的意图,产生了bug。
解决方法是,在程序中显式地出现浮点运算,但不能仅仅是赋值,例如,在p=(float *)malloc(sizeof(float));后面加一句:*p=cos(0.0);就OK了。虽然这一句是没有任何用处的,但它告诉scanf需要加载浮点模块。
解决方案2: 试试这样:
#include
#include
#define LENGTH 3
struct student
{
float score[3];
}stud[LENGTH];
void save(void)
{
int i,j;
float x=cos(0.0);
for(i=0;i<>
{
for(j=0;j<>
{
scanf("%f",&stud[i].score[j]);
printf("\n%.2f",stud[i].score[j]);
}
}
}
void main(void)
{
save();
}
以上介绍了“ 无法正常输入数据给结构体成员”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2303963.html