c++以二进制方式读取任意文件,将读取到的二进制数一堆0,1存储到指针或者数组中

以二进制形式读取任意文件,将二进制一堆0,1,存储到某个数组中之后将数组或指针中的1,0进行重新排列修改之后再保存到源文件... 以二进制形式读取任意文件,将二进制一堆0,1,存储到某个数组中
之后将数组或指针中的1,0进行重新排列修改之后再保存到源文件
展开
 我来答
darkelemental
2015-04-26 · TA获得超过242个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:101万
展开全部
int read(FILE *fp, int ** buff)
{
    int len = 0; 
    char c; 
    while(fread(&c,1,1,fp)==1)
    {
        int i; 
        *buff = (int*)realloc(*buff, (len+8)*sizeof(int));
        for(i=0;i<8;i++)
        {
            unsigned char t = 1<<i;
            (*buff)[len+i] = c&t?1:0; 
        }
        len += 8;
    }
    return len;  
}

void write(FILE * fp, int * buff, int len)
{
    int i;
    for(i=0;i<len/8;i++)
    {
        int j;
        unsigned char c = 0;
        for(j=0;j<8;j++)
        {
            int val = i*8+j<len?buff[i*8+j]:0;
            val<<=j;
            c |= val; 
        }
        fwrite(&c, sizeof(char), 1, fp);  
    }   
}


没调试,随手打的,自己调,不行再问吧

追问
不用问了,多谢,完美解决了我的问题。
百度网友cdb4d1b
2015-04-24 · TA获得超过143个赞
知道小有建树答主
回答量:275
采纳率:45%
帮助的人:82万
展开全部
文件流的形式读写。C++有专门的接口,调用就行
更多追问追答
追问
代码有没有?我给了100分了,不够我再加。。。。
就以二进制方式读一个任意格式的文件(文件里可能存了任意的东西),然后将读入的二进制数存到一个int数组里面。。。最后那个数组是一串只有0,1的数组
追答
#include 
#include
#include
#include
using namespace std;
main()
{

short b=1; // 同一类型
FILE *fp;
FILE *fp2;
int i=0;
int a[1000];
fp=fopen("GTBL.dat","rb"); //文件名GTBL
while(1)
{
fread(&b,sizeof(short),1,fp);
if (feof(fp)) break; // 读后判断EOF
a[0]=b;
i++;
}
fclose(fp);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式