幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2457|回复: 4

[通用编程] 結構輸入float型的問題

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2008-1-26 11:43:54 | 显示全部楼层 |阅读模式
  這問題好像以前用TC的時候問過,不過找不到貼子了,當時把那程序返回到VC6上問題就沒了,但今天這問題也在VC6上出現了所以想再問問。
struct
{
      int   num;
      char   name[20];
      float   score ;
}student;
比如這樣的個結構。為什麼不能直接這樣   scanf("%f",&student.score);給score賦值呢?

記得以前說要先定義一個float類型的變量 先接受了值,再把該值賦給 student.score
像這樣
float  x;
scanf("%f",&x);
student.score=x;

為什麼要這樣做呢?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

4

主题

46

帖子

1559

积分

⑥精研

积分
1559
QQ
发表于 2008-1-26 12:30:44 | 显示全部楼层
在VC6上测试了,似乎没有出什么问题,请问楼主能否把自己遇到的问题说具体一点呢,谢谢~
整整两年之后的故地重游,幻森,I'm back~ 钻头直破天际,你,以为我们是谁!
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2008-1-26 13:11:13 | 显示全部楼层
就是編譯通過,運行時出錯,但將employee.score先初始化就沒問題
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

4

主题

46

帖子

1559

积分

⑥精研

积分
1559
QQ
发表于 2008-1-26 13:36:17 | 显示全部楼层
额,麻烦楼主把完整的代码提供一下吧,谢谢~

可能问题在其他地方呢~
整整两年之后的故地重游,幻森,I'm back~ 钻头直破天际,你,以为我们是谁!
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2008-1-26 14:22:17 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void main()
  4. {
  5.     struct
  6.     {
  7.         char name[20];
  8.         char sex;
  9.         int num;
  10.         int age;
  11.         float money;
  12.     }employee;
  13.     FILE *fp;
  14.     char ch;
  15.    
  16.     if((fp=fopen("employeerecord.txt","wb"))==NULL)
  17.     {
  18.         printf("can't open file.\\n");
  19.         exit(0);
  20.     }
  21.     do
  22.     {
  23.         printf("enter name:");gets(employee.name);
  24.         printf("enter sex:");scanf("%c",&employee.sex);
  25.         printf("enter num:");scanf("%d",&employee.num);
  26.         printf("enter age:");scanf("%d",&employee.age);
  27.         printf("enter money:");scanf("%f",&employee.money);
  28.         fwrite(&employee,sizeof(employee),1,fp);//將上面內容寫入文件中
  29.         printf("continue(y/n)?");
  30.         fflush(stdin);
  31.                                           ch=getchar();
  32.         fflush(stdin);
  33.     }while(ch=='y');
  34.     fclose(fp);
  35. }
复制代码
就是這樣, 原來是自己的問題 少寫了個fflush(stdin)
不過在TC上確實是有我說那個問題的,人家解釋說
“scanf的浮点格式转换程序没有连接。因为TC开发时DOS下的存储资源紧缺,因此TC在编译时尽量不加入无关部分。在没发现需要做浮点转换时,就不将这个部分安装到可执行程序里。但有时TC不能正确识别实际确实需要浮点转换,因此就会出现上面错误。”
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-28 00:41 , Processed in 0.021559 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表