鱼C论坛

 找回密码
 立即注册
查看: 1940|回复: 10

[已解决]关于%f出现BUG

[复制链接]
发表于 2018-5-16 09:01:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 理想小青年 于 2018-5-16 11:04 编辑

最近写一段代码 因为%f的问题死循环(一开始以为函数,调试后是printf语句)  
虽然找到原因已改正 本质问题没清楚 float 与 double这两个类型很清楚  单精度与双精度 大小溢出范围 %f的体用谁来讲讲
白话文描述的 比如 %5.2f,%.2f,%-10f等等  
如果不当的输入(%f)为什么造成死循环??单凭%f就可以死循环- - 一直没搞懂?
代码如下
对指针赋值
p1,p2结构体指针变量
  1.         while( p1->num != 0 )
  2.         {
  3.                 n++;//每次n+1,作为新增节点条件
  4.                 if( n == 1 )
  5.                 {
  6.                         head = p1; //头指针指向链表头部
  7.                 }
  8.                 else
  9.                 {
  10.                         p2->next = p1;
  11.                 }

  12.                 p2 = p1;//head,p1,p2指向同一地址

  13.                 p1 = (struct student *)malloc(LSN);//p1这时候指向新节点了

  14.                 printf("Please input num of valuse:\n");
  15.                 scanf("%d",&p1->num);
  16.                 printf("Please input score of valuse:\n");
  17.                 scanf("%f",&p1->score);
  18.        
  19.                 printf("num = %d\n",p1->num);
  20.                 printf("score = %f\n",p1->score);
  21.         }
复制代码
最佳答案
2018-5-16 11:30:03
本帖最后由 BFSDT 于 2018-5-16 11:32 编辑

你P1应该是LSN结构类型吧,在结构里面你对num和score使用的应该是指针而非基本数据吧,所以你给P1分配的空间只是num指针和score指针占用的大小的空间,这两个指针指向的地方你并没有分配,直接使用当然出问题了,不止是score,num也会出问题,只是你运气比较好而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-16 09:02:27 | 显示全部楼层
以前没碰见过这种问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 09:04:14 | 显示全部楼层
你的循环都没贴出来别人怎么分析出是%f导致的死循环

参考:
http://bbs.fishc.com/thread-66471-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 09:18:29 | 显示全部楼层
循环何在????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 10:23:45 | 显示全部楼层
where is your loop?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-16 11:05:09 | 显示全部楼层
BngThea 发表于 2018-5-16 09:04
你的循环都没贴出来别人怎么分析出是%f导致的死循环

参考:

我把代码贴出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-16 11:05:56 | 显示全部楼层
ba21 发表于 2018-5-16 09:18
循环何在????

贴出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-16 11:07:30 | 显示全部楼层
循环目前没有测试出问题 多角度测试很久了 不用指针也尝试了  (%f)这个输入值导致死循环 score赋值地址有时候就一直死循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 11:30:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 BFSDT 于 2018-5-16 11:32 编辑

你P1应该是LSN结构类型吧,在结构里面你对num和score使用的应该是指针而非基本数据吧,所以你给P1分配的空间只是num指针和score指针占用的大小的空间,这两个指针指向的地方你并没有分配,直接使用当然出问题了,不止是score,num也会出问题,只是你运气比较好而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 12:50:54 | 显示全部楼层
你没有把代码贴完整
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 18:26:55 | 显示全部楼层
不知道怎么说你。把全部贴上来不就成了。

还有你问题出在哪一句。指明一下。

感觉你是在出题给别人做。叫被全代码。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 22:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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