| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2510 人关注过本帖
标题:输入学生的学号 姓名 三门课成绩 平均分 然后保存到一个文件上,为什么文件的 ...
只看楼主 加入收藏
llp108
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-11-15
结帖率:25%
收藏
 问题点数:0 回复次数:3 
输入学生的学号 姓名 三门课成绩 平均分 然后保存到一个文件上,为什么文件的成绩部分是乱码
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define LEN sizeof(struct student)
struct student
{
    char num[5];
    char name[20];
    float score[3];
    float ave;
    struct student*next;
}
main()
{
    void creat_fput(struct student*);
    struct student *head;
    head=(struct student*)malloc(LEN);
    creat_fput(head);
}
void creat_fput(struct student*head)
{
    struct student *p1,*p2;
    FILE*fp;
    int i,j=1;
    float sum=0;
    fp=fopen("stud3.16","wb");
    if(fp==NULL)
       printf("文件建立失败!\n");
    printf("请输入学生信息,以学号为#号结束:\n");
    p1=head;
    do
    {
        printf("第%d个学生:\n",j);
        printf("学号:");
        scanf("%s",p1->num);
        if(p1->num[0]=='#')
          break;
        fwrite(&p1->num,strlen(p1->num),1,fp);
        fputc(' ',fp);
        printf("姓名:");
        scanf("%s",p1->name);
        fputc(' ',fp);
        fwrite(&p1->name,strlen(p1->name),1,fp);
        printf("成绩:\n");
        for(i=0;i<3;i++)
           {printf("%c:",'A'+(char)i);
            scanf("%f",&p1->score[i]);
            fwrite(&p1->score[i],4,1,fp);
            sum=sum+p1->score[i];}
        p1->ave=sum/3;
        fwrite(&p1->ave,4,1,fp);
        fputc('\n',fp);
        p2=p1;
        p1=(struct student*)malloc(LEN);
        p2->next=p1;
        sum=0;
        j++;
    }while(1);
    p2->next=NULL;
    fclose(fp);
}

[[italic] 本帖最后由 llp108 于 2008-1-19 21:01 编辑 [/italic]]
搜索更多相关主题的帖子: 学号 平均分 乱码 姓名 文件 
2008-01-18 20:09
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
自己写啊,这几天经常看见这个题目啊,我都写了两次了
2008-01-18 20:15
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1687
专家分:4253
注 册:2007-12-27
收藏
得分:0 
因为你的文件使用方式为“wb”,也就是二进制写,
所以你所说的“乱码”事实上就是数值的二进制形式,和它在内存里面的形式一致。

通俗地说,二进制是给机器看的,不是给人看的,所以人眼睛认为它是乱码。
2008-01-18 20:28
llp108
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-11-15
收藏
得分:0 
该成w也一样
2008-01-19 21:00
快速回复:输入学生的学号 姓名 三门课成绩 平均分 然后保存到一个文件上,为什么 ...
数据加载中...
 
   



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

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