| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:请教各位高手个问题
只看楼主 加入收藏
chenzhe_04
Rank: 1
等 级:新手上路
帖 子:5
专家分:8
注 册:2009-9-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
请教各位高手个问题
#include<stdio.h>
#define N 4

struct student
{
    char name[10];
    int num;
    char addr[10];
    float grade[3];
    float average;
};


main()
{
    FILE *fp;
    int i, j, k, sum=0;   
    struct student stud[N];
    char filename[10];
   
   
    printf("Enter the filename:\n");
    scanf("%s",filename);

    printf("Enter the information:\n");
    for(i=0;i<N;i++)
    {
        scanf("%s%d%s",stud[i].name,&stud[i].num,stud[i].addr);
        for(j=0;j<3;j++)
                scanf("%f",&stud[i].grade[j]);                    
    }
   
   
    for(i=0;i<N;i++)
    {
        for(j=0;j<3;j++)
            sum=sum+stud[i].grade[j];
        stud[i].average=sum/3;
    }
   
   
    if((fp=fopen(filename,"wb"))==NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
   
    for(k=0;k<N;k++)
        fwrite(&stud[i],sizeof(struct student),1,fp);
   
    fclose(fp);
   
}


程序没发现错  运行时输入第一行然后Enter 出错
图片附件: 游客没有浏览图片的权限,请 登录注册

劳烦各位大侠了
搜索更多相关主题的帖子: average include Enter 
2009-09-23 23:33
xdyuan33
Rank: 3Rank: 3
来 自:广西大学化工学院
等 级:论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
收藏
得分:0 
scanf("%s%d%s",stud[i].name,&stud[i].num,stud[i].addr);
最好格式那里放‘,’"%s,%d,%s
其实我也不懂乱说的不介意哦

(参与切磋是美德,每天回帖即可获得10分可用分!)

参与切磋是美德,每天回帖即可获得10分可用分!
2009-09-24 00:28
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 2楼 xdyuan33
放不放和程序错误没关系啊。
不放输入的时候不输入逗号就可以了,
放了就要按格式加逗号输了撒。
不过美观一点,嘿嘿

我可好玩啦...不信你玩玩^_^
2009-09-24 00:37
xdyuan33
Rank: 3Rank: 3
来 自:广西大学化工学院
等 级:论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
收藏
得分:0 
这样。
LZ输入时多了空格了其它的不懂

参与切磋是美德,每天回帖即可获得10分可用分!
2009-09-24 00:45
xdyuan33
Rank: 3Rank: 3
来 自:广西大学化工学院
等 级:论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
收藏
得分:0 
(参与切磋是美德,每天回帖即可获得10分可用分!)
无聊啊无聊啊

参与切磋是美德,每天回帖即可获得10分可用分!
2009-09-24 00:47
gaohan188
Rank: 2
等 级:论坛游民
帖 子:14
专家分:15
注 册:2009-8-25
收藏
得分:0 
学习一下!
2009-09-24 08:37
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1686
专家分:4252
注 册:2007-12-27
收藏
得分:10 
这是TC天生的毛病,它认为scanf函数不算浮点处理函数,所以没有连接浮点库。
解决办法,
第一推荐不用TC,也不用其他DOS环境开发工具
第二,如果一定要用TC,那就自己写一个没用的浮点函数放在那,好强迫TC连接浮点库。
  例如 double _funcdummy(double x){return x*x;}

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2009-09-24 08:57
chenzhe_04
Rank: 1
等 级:新手上路
帖 子:5
专家分:8
注 册:2009-9-4
收藏
得分:0 
回复 7楼 forever74
非常感谢  我把float类型的数换成int类型 就ok了
scanf函数不算浮点处理函数??看下面的
main()
{
  float a, b, c;
  scanf("%f%f",&a,&b);
  c=a+b;
  printf("%f",c);
}
这个可以运行的啊 输入12 34 得出答案46.000000
这两个程序在scanf处理float类型数应该是一样的,请教
2009-09-24 10:48
beyond_one
Rank: 4
等 级:业余侠客
帖 子:61
专家分:206
注 册:2009-6-26
收藏
得分:0 
我也是用TurboC,没出现你那样的问题

    for(k=0;k<N;k++)
        fwrite(&stud[i],sizeof(struct student),1,fp);
中的&stud[i]应该是&stud[k]吧!
2009-09-24 10:48
chenzhe_04
Rank: 1
等 级:新手上路
帖 子:5
专家分:8
注 册:2009-9-4
收藏
得分:0 
回复 9楼 beyond_one
确实应该是K  没有发现呢  不过我说的那个问题 应该不是这个导致的
fwrite是写文件的函数  把输入内存的数据写到文件里   
但现在我输入信息第一行  Enter后 出现问题  
然后显示 scanf:floating point formats not linked
         Abnormal program termination
这时应该是把数据输入内存的过程
把数据类型全换成int后 这个问题就没了  
应该像7#那位大侠所说的吧
2009-09-24 14:34
快速回复:请教各位高手个问题
数据加载中...
 
   



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

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