| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1997 人关注过本帖
标题:fwrite,fread函数,懂的帮看看
只看楼主 加入收藏
跆拳勇士
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2017-7-21
结帖率:100%
收藏
已结贴  问题点数:13 回复次数:5 
fwrite,fread函数,懂的帮看看
#include<stdio.h>
#include<io.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<conio.h>
#define LEN 100

typedef struct
{
    char bookid[6];
    char bookname[30];
    int  price;
    int  qty;
    char flag[3];
}book;

int main()
{
    FILE *fptr;
    char fpath[LEN],t_price[10],t_qty[10];
    int fno,fsize,rectot;
    book mybook;
    printf("请选择功能->1.打开新文件 2.打开旧文件: ");
    if(getche()=='1')
    {
        printf("\n请输入文件路径:");
        gets(fpath);
        fptr=fopen(fpath,"w+");
    }
    else
    {
        printf("\n请输入旧文件路径: ");
        gets(fpath);
        fptr=fopen(fpath,"a+");
    }
    if(fptr==NULL)
    {
        printf("%s文件打开失败\n",fpath);
        exit(0);
    }
    while(1)
    {
        printf("\n请问是否继续添加新数据(Y/N): ");
        if(toupper(getche())=='Y')
        {
            printf("\n请输入要添加的数据: \n");
            printf("书号: ");
            gets(mybook.bookid);
            printf("书名: ");
            gets(mybook.bookname);
            printf("单价: ");
            gets(t_price);
            mybook.price=atoi(t_price);
            printf("库存: ");
            gets(t_qty);
            mybook.qty=atoi(t_qty);
            fwrite(&mybook,sizeof(mybook),1,fptr);
        }
        else
        {
            fclose(fptr);
            break;
        }
    }
    fptr=fopen(fpath,"r");
    fno=fileno(fptr);
    fsize=filelength(fno);
    rectot=filelength(fileno(fptr))/sizeof(mybook);
    printf("\n数据更新完成……\n");
    printf("%s目前文件大小 %d Bytes\n",fpath,fsize);
    printf("%s数据内容如下:\n",fpath);
    printf("\n记录总笔数: %d\n",rectot);
    while(fread(&mybook,sizeof(mybook),1,fptr)!=NULL)
    {
        printf("%6s %30s %5d %5d\n",mybook.bookid,mybook.bookname,mybook.price,mybook.qty);
    }
    fclose(fptr);
    printf("\n");
    return 0;
}

输入书号 001 书名 历史  单价200  库存 100,之后虽然能正确运行,但是打开文件却是乱码,为什么?


搜索更多相关主题的帖子: include char printf 文件 gets 
2017-11-10 16:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:5 
你写入的数据是文本吗?如果不是,就谈不上“乱码”
2017-11-10 19:59
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:5 
楼主所述的问题可能是代码页问题。
你用全英文输入没有问题(不要出现汉字),就证明你的代码逻辑上是正确的。
如果需要汉字输入你需要考虑的问题有:c语言默认代码页,怎么改变代码页,操作系统默认代码页,怎么改变汉字编码
GB936,18030,utf8等
2017-11-10 22:09
跆拳勇士
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2017-7-21
收藏
得分:0 
回复 2楼 rjsp
图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册
2017-11-12 15:41
跆拳勇士
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2017-7-21
收藏
得分:0 
回复 3楼 zbjzbj
C语言的代码页怎么更改呢
2017-11-12 15:42
对面别推呀
Rank: 2
等 级:论坛游民
威 望:1
帖 子:5
专家分:16
注 册:2017-11-17
收藏
得分:0 
我想说 fwrite() 这个函数写的是二进制的文件 ,你可以用下 fprintf() 这个函数试试
2017-11-17 17:09
快速回复:fwrite,fread函数,懂的帮看看
数据加载中...
 
   



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

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