| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 444 人关注过本帖
标题:关于“fwrite”函数的文件输出问题。。。
只看楼主 加入收藏
漫步123
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2012-4-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
关于“fwrite”函数的文件输出问题。。。
麻烦大家看看这个程序,运行后显示是对的,可是输出到文件的内容都是乱码。求解?

#include<stdio.h>
#include<stdlib.h>
struct student
{
    int num;
    char name[15];
    float score[3];
    float aver;
}stud[5];
float ave(float a,float b,float c)
{
    float d;
    d=(a+b+c)/3;
    return d;
}
int main()
{
    int i;
    FILE *fp;
    float k;
    for(i=0;i<5;i++)
        scanf("%d%s%f%f%f",&stud[i].num,stud[i].name,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
    for(i=0;i<5;i++)   
    {
       k=ave(stud[i].score[0],stud[i].score[1],stud[i].score[2]);
       stud[i].aver=k;
    }
    if((fp=fopen("stud.c","wb"))==NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
   
    for(i=0;i<5;i++)
    {
        if(fwrite(&stud[i],sizeof(struct student),1,fp)!=1)
       printf("file write error\n");
       fputc('\n',fp);
       printf("%d  %-15s%-6.2f%-6.2f%-6.2f%-6.2f\n",stud[i].num,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].aver);
    }
    fclose(fp);
}
搜索更多相关主题的帖子: include return 
2012-04-25 18:53
goofywjb
Rank: 2
等 级:论坛游民
帖 子:3
专家分:20
注 册:2012-4-26
收藏
得分:10 
没问题的,你建立的是二进制的文件,显示的就是乱码。
若是你建立的是文本文件,就可以看到内容了,不过你要转换数据,不如二进制来的方便。
2012-04-26 11:34
漫步123
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2012-4-25
收藏
得分:0 
回复 2楼 goofywjb
可是我在程序后面追加“fread”函数把文件(“fwrite”生成的文件)内容读到屏幕上,屏幕上显示的也是乱码。这又是为什么呢?按道理在屏幕上应该可以全部显示的…
2012-04-27 13:22
王点口
Rank: 2
等 级:论坛游民
帖 子:26
专家分:50
注 册:2011-9-15
收藏
得分:10 
#include<stdio.h>
#include<stdlib.h>
struct student
{
    int num;
    char name[15];
    float score[3];
    float aver;
}stud[5];
float ave(float a,float b,float c)
{
    float d;
    d=(a+b+c)/3;
    return d;
}
int main()
{
    int i;
    FILE *fp;
    float k;
    for(i=0;i<3;i++)
        scanf("%d%s %f%f%f",&stud[i].num,stud[i].name,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
    for(i=0;i<3;i++)   
    {
       k=ave(stud[i].score[0],stud[i].score[1],stud[i].score[2]);
       stud[i].aver=k;
    }
    if((fp=fopen("stud.c","wb"))==NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
   
    for(i=0;i<3;i++)
    {
        if(fwrite(&stud[i],sizeof(struct student),1,fp)!=1)
       printf("file write error\n");
        fputc(' ',fp);
       //fputc('\n',fp);
       printf("%d  %-15s%-6.2f%-6.2f%-6.2f%-6.2f\n",stud[i].num,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].aver);
    }
    rewind(fp);
    for(i=0;i<3;i++)
    {
        if(fread(&stud[i],sizeof(struct student),1,fp)!=1)
       printf("file write error\n");
       printf("%d  %-15s%-6.2f%-6.2f%-6.2f%-6.2f\n",stud[i].num,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].aver);
    }

    fclose(fp);
}
用空格符号隔开就可以 ,但我也不晓得用回车键隔开为什么不行!
还请高手解答!
2012-04-27 15:55
快速回复:关于“fwrite”函数的文件输出问题。。。
数据加载中...
 
   



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

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