| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1737 人关注过本帖
标题:链表的用scanf不能赋值
只看楼主 加入收藏
olivehave
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-20
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
链表的用scanf不能赋值
我的链表为什么不能全部赋值?
#include<malloc.h>
#define L sizeof(struct stu)
struct stu
{
 long num;
 float score;
 struct stu *head;
 };
main()
{
 struct stu *p1,*p2,*p3;
 p1=(struct stu *)malloc(L);
 p2=(struct stu *)malloc(L);
 p3=(struct stu *)malloc(L);

     scanf("%ld,%f",&p1->num,&p1->score);
     scanf("%ld,%f",&p2->num,&p2->score);
     scanf("%ld,%f",&p2->num,&p2->score);
  printf("\n\n%ld,%f\n",p1->num,p1->score) ;
  printf("%ld,%f\n",p2->num,p2->score) ;
  printf("%ld,%f\n",p3->num,p3->score) ;
 }

程序中,scanf的应用输入一组数据回车后,屏幕自动关闭。为什么呢?
搜索更多相关主题的帖子: scanf 赋值 链表 
2009-10-20 11:13
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:10 
输入格式应该是“num, score回车”,例如输入1,85.5回车。
而且按照你的意思,第三个scanf语句中p2应该改成p3

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2009-10-20 11:40
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:10 
#include "malloc.h"
#include "stdio.h"
#define L sizeof(struct stu)
struct stu
{
long num;
float score;                                       
struct stu *head;
};
main()
{
    float score=0;
     
struct stu *p1,*p2,*p3;
p1=(struct stu *)malloc(L);
p2=(struct stu *)malloc(L);
p3=(struct stu *)malloc(L);
 
         
         
     scanf("%ld,%f",&p1->num,&score);
    p1->score=score;
      
     scanf("%ld,%f",&p2->num,&score);
     p2->score=score;
      
     scanf("%ld,%f",&p3->num,&score);
     p3->score=score;
  printf("\n\n%ld,%f\n",p1->num,p1->score);
  printf("%ld,%f\n",p2->num,p2->score) ;
  printf("%ld,%f\n",p3->num,p3->score) ;
}
2009-10-20 12:14
olivehave
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-20
收藏
得分:0 
回复 2楼 chenaiyuxue
我是有加“,”的
2009-10-20 17:56
olivehave
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-20
收藏
得分:0 
回复 3楼 m456m654
为什么不能直接输入值呢?多多指教
2009-10-20 17:57
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
我呢说不清楚,只是大概有个了解。我说说我的了解,但仅作参考,希望你问问权威人士或者查查详细资料。
他们都称这是浮点数据库的链接问题。下面加上点网络上搜到的描述,我自己的描述太差了。
 早期为了节省资源,在默认情况下是不链接浮点库的。   
 (也就是在没有显式浮点操作的情况下,浮点库将不被链接,使用浮点操作就会发生错误)   
  Q.   I   get   a   "floating   point   formats   not   linked"   message   when   I   run      
          my   program.   What   can   I   do   about   it?      
         
  A.   Floating   point   formats   (for   scanf()   and   related   functions)   are      
       not   always   linked,   for   savings   in   executable   size.   To   force   their      
          inclusion,   put   the   following   somewhere   in   your   source   files:      
         
              extern   unsigned   _floatconvert;      
              #pragma   extref   _floatconvert     
 大体意思就是说,在用浮点库时要给出使用的提示信息,最好不要直接调用,如scanf()。为了保险期间,建议先定义一个浮点型变量,这样就起到了调用浮点库的提示信息(电脑就知道你要用到浮点类型数据,就将浮点库调入程序);我在你的程序里改的是先将浮点型读入实现定义的一个变量里,然后再赋给想给的浮点型数据(而且我发现,只定义一个浮点型数据,不给他格式输入,它照样起不到条用浮点库的作用,所以你还是先读入一个浮点型数据吧)。
还说一点,我之前看到有个帖子里,也有这种情况,那是在给二位浮点型数组格式输入的时候,也会出现这样的错误。
即你不能直接进行scanf(”%f”,a[i][j]);原因同上。你也要来一句“废话”:scanf("%f",x);虽然你并不需要读入x的值,或者根本不需要x这个变量,但是你必须先格式输入一次浮点型数据,来起到调用浮点库函数的作用。
通过你的帖子有多学了一种情况,呵呵。
对于这种情况,他们有的说是tc的一个bug表现。
不管怎样,只要知道了那几种情况下需要事先调用浮点库,到时候多注意就ok了。
希望你能有所明白。
2009-10-20 20:20
快速回复:链表的用scanf不能赋值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016512 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved