結構輸入float型的問題
這問題好像以前用TC的時候問過,不過找不到貼子了,當時把那程序返回到VC6上問題就沒了,但今天這問題也在VC6上出現了所以想再問問。struct
{
int num;
char name;
float score ;
}student;
比如這樣的個結構。為什麼不能直接這樣 scanf("%f",&student.score);給score賦值呢?
記得以前說要先定義一個float類型的變量 先接受了值,再把該值賦給 student.score
像這樣
floatx;
scanf("%f",&x);
student.score=x;
為什麼要這樣做呢? 在VC6上测试了,似乎没有出什么问题,请问楼主能否把自己遇到的问题说具体一点呢,谢谢~ 就是編譯通過,運行時出錯,但將employee.score先初始化就沒問題 额,麻烦楼主把完整的代码提供一下吧,谢谢~
可能问题在其他地方呢~
#include<stdio.h>
#include<stdlib.h>
void main()
{
struct
{
char name;
char sex;
int num;
int age;
float money;
}employee;
FILE *fp;
char ch;
if((fp=fopen("employeerecord.txt","wb"))==NULL)
{
printf("can't open file.\\n");
exit(0);
}
do
{
printf("enter name:");gets(employee.name);
printf("enter sex:");scanf("%c",&employee.sex);
printf("enter num:");scanf("%d",&employee.num);
printf("enter age:");scanf("%d",&employee.age);
printf("enter money:");scanf("%f",&employee.money);
fwrite(&employee,sizeof(employee),1,fp);//將上面內容寫入文件中
printf("continue(y/n)?");
fflush(stdin);
ch=getchar();
fflush(stdin);
}while(ch=='y');
fclose(fp);
}
就是這樣, 原來是自己的問題 少寫了個fflush(stdin)
不過在TC上確實是有我說那個問題的,人家解釋說
“scanf的浮点格式转换程序没有连接。因为TC开发时DOS下的存储资源紧缺,因此TC在编译时尽量不加入无关部分。在没发现需要做浮点转换时,就不将这个部分安装到可执行程序里。但有时TC不能正确识别实际确实需要浮点转换,因此就会出现上面错误。”
页:
[1]