| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10279 人关注过本帖
标题:如何读取二进制文件?
只看楼主 加入收藏
youlanxiao
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:30 
如何读取二进制文件?
#include "stdio.h"
#include "process.h"
void main()
{
    FILE *fp;
    char c;

    if((fp=fopen("E:\\Encode1.da","rb"))==NULL)
    {
        printf("Can't open the file! \n");
        exit(1);
    }
    else
    {
        c=fgetc(fp);
        while (!feof(fp))
        {
            putchar(c);
            c=fgetc(fp);
        }
        putchar('\n');
        fclose(fp);
    }
}
上面是我我写的一个利用c读取二进制文件的编程。。。但是打开来的文件是乱码。不知道原因。。。还有就是因为文件后缀是.da我之前用记事本不小心打开了。。。所以现在文件图标变成记事本格式不知道如何解除。。。求求各位大神帮忙指点一下。。。谢谢
搜索更多相关主题的帖子: 如何 二进制 include 
2012-09-08 11:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你知道这个文件的数据类型是什么了就这样读、写?fgetc()进来的是啥,你就敢用putchar()显示?

授人以渔,不授人以鱼。
2012-09-08 11:33
youlanxiao
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-8
收藏
得分:0 
哦~~~文件类型是1 char+1 int...原来与文件类型有关那。那应该怎么处理?谢谢啦
2012-09-08 11:36
youlanxiao
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-8
收藏
得分:0 
回复 2楼 TonyDeng
文件是1 char+1 int类型。。。这样应该怎么处理?谢谢了
2012-09-08 11:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
把明白你想达到什么目的。二进制文件中储存了数值1,是整数,你fgetc()读进来也是整数1,如果你希望它保持是整数,就不用做什么,如果要显示到屏幕上让你看到,那么它必须被转化为字符串,即printf("%d", c)。putchar(c)是把c视为字符看待的,ASCII码1是不可见字符,当然是乱码了。

注意:ASCII码1与字符'1',是两回事,虽然人眼在屏幕上看是一样的,但那是完全不同的东西,'1'的ASCII码是49。

授人以渔,不授人以鱼。
2012-09-08 11:53
youlanxiao
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-8
收藏
得分:0 
回复 5楼 TonyDeng
有点懂了。。。文件是老师发给我们的。。。让我们打开它然后排序。所以我并不知道里面的内容。现在也就是说我需要把二进制文件转化成ASCII的形式对么?但是它是一个char 和int混合的形式该怎么办呢?
2012-09-08 12:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
混合数据类型的,需要你知道它什么时候是char,什么时候是int,分开来对待。老师给这样的文件你们,那么应该配备一个对应的数据结构(struct),用这个来读。

授人以渔,不授人以鱼。
2012-09-08 12:06
youlanxiao
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-8
收藏
得分:0 
回复 7楼 TonyDeng
数据格式:
1 char + 1 int,其中char为原文字符,int为其所在位置的标示量
上面的就是老师给的数据格式。。。这个就是数据结构么?。。。混合型的又应该怎么读?分开来读么?
2012-09-08 12:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
老师的原文是怎么写的呀?要么你把那个文件附件发上来看看。

授人以渔,不授人以鱼。
2012-09-08 12:35
youlanxiao
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2012-9-8
收藏
得分:0 
回复 9楼 TonyDeng
第一次试验.zip (20.06 KB)
这个里面有三组数据。。。我们班是第一组
2012-09-08 12:39
快速回复:如何读取二进制文件?
数据加载中...
 
   



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

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