c++以二进制方式读取任意文件,将读取到的二进制数一堆0,1存储到指针或者数组中
以二进制形式读取任意文件,将二进制一堆0,1,存储到某个数组中之后将数组或指针中的1,0进行重新排列修改之后再保存到源文件...
以二进制形式读取任意文件,将二进制一堆0,1,存储到某个数组中
之后将数组或指针中的1,0进行重新排列修改之后再保存到源文件 展开
之后将数组或指针中的1,0进行重新排列修改之后再保存到源文件 展开
2个回答
展开全部
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);
}
}
没调试,随手打的,自己调,不行再问吧
追问
不用问了,多谢,完美解决了我的问题。
展开全部
文件流的形式读写。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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询