鱼C论坛

 找回密码
 立即注册
查看: 3483|回复: 4

关于C语言结构体的一个问题!

[复制链接]
发表于 2013-4-16 19:35:51 | 显示全部楼层 |阅读模式
3鱼币
  1. #include "stdio.h"

  2. void main()
  3. {
  4. struct student
  5. {
  6. int num;
  7. char *name;
  8. char sex;
  9. float score;
  10. };

  11. struct student boy1,boy2;

  12. boy1.num=1;
  13. boy1.name="Tom";

  14. printf("sex=");
  15. scanf("%c",&boy1.sex);
  16. printf("score=");
  17. scanf("%f",&boy1.score);
  18. }
复制代码

为什么这段代码在VC++6.0里编译没问题 运行后会报错。
scanf("%f",&boy1.score);报错应该是这句,我把其中的float换成int就可以,换成double也报错!怎么回事,求大神解答!

最佳答案

查看完整内容

请有VC6.0的朋友试一下这个程序,运行的时候输入一个数字,会出现runtime error(运行期错误),VS2008没有错误,其它的版本没有试。 查了一下资料微软给出的官方解释是:当应用程序从控制台读取的浮点值,到一个未初始化"浮动"类型的全局变量使用 scanf() 函数时,则会发生 R6002 浮点格式支持不加载"错误。 在使用任何格式输入的例程中读取值时,也会发生此错误。 微软的官方解决方案:要变通解决此问题,初始化浮点 ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-16 19:35:52 | 显示全部楼层


请有VC6.0的朋友试一下这个程序,运行的时候输入一个数字,会出现runtime error(运行期错误),VS2008没有错误,其它的版本没有试。

查了一下资料微软给出的官方解释是:当应用程序从控制台读取的浮点值,到一个未初始化"浮动"类型的全局变量使用 scanf() 函数时,则会发生 R6002 浮点格式支持不加载"错误。 在使用任何格式输入的例程中读取值时,也会发生此错误。

微软的官方解决方案:要变通解决此问题,初始化浮点变量或表达式中包含 scanf() 调用该例程中使用该变量。

看来变量的初始化确实是个很好的习惯,我们可以这样改:







[c-sharp] view plaincopy
01.#include <stdio.h>  
02.  
03.int main()  
04.{  
05.    float fl = 0;  
06.    scanf("%f", &fl);  
07.    return 0;  
08.}  
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-16 20:09:09 | 显示全部楼层
解决了哦!
参考了这篇文档:
http://blog.csdn.net/xiaobo68688/article/details/5680041
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-16 22:12:00 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-17 09:44:46 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-3 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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