急~!如何保存为二进制文件和读取二进制文件

nigelyoyo 2009-03-30 09:25:07
题目就是标题,如何读取二进制文件和保存二进制文件~!求各位大侠帮忙看下,小弟不胜感激~!
有源代码的更好~!谢谢给位了~!
...全文
184 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nigelyoyo 2009-03-31
  • 打赏
  • 举报
回复
谢谢各位,我找到解决方法了~!
xjq2003 2009-03-31
  • 打赏
  • 举报
回复
fp=fopen("temp1.dat","w+");
fputc((unsigned char)(i/0x100),fp);
fputc((unsigned char)(i&0xff),fp);
fputc(0x0d,fp);
fputc((0x0a),fp);
fclose(fp);
写的文件中是这样的
01 02 od od oa 01 02 od od oa 01 02 od od oa
里面多了一个OD
fp=fopen("temp1.dat","w+B"); //w+b写二进制
fputc((unsigned char)(i/0x100),fp);
fputc((unsigned char)(i&0xff),fp);
fputc(0x0d,fp);
fputc((0x0a),fp);
fclose(fp);
01 02 od oa 01 02 od oa 01 02 od oa
这样就正常了,
读取的时候
fp=fopen("temp1.dat","r+b");//fp=fopen("temp1.dat","r+");是读不出来0D字符的,
findex=0;
while(!feof(fp))
{
buf[findex++]=fgetc(fp);
if(findex==4)
{
findex=0;
if(buf[2]==0xaa&&buf[3]==0x0a)
{
//if(buf[1]!=0x0a)
{
Adata1[index1]=double(buf[0])*0x100+double(buf[1]);
if(index1 <40)index1++;
}
}
}

}

fclose(fp);
fairchild811 2009-03-30
  • 打赏
  • 举报
回复
FILE* pFile = fopen( "path", "r+b" );

int nl = 0;
int nh = 0;

fread(pFile, &nl, 1, 1);
fread(pFile, &nh, 1, 1); 读入数据

写的话用fwrite。

或者用fstream

网上的一个例子

#include <fstream>
using namespace std;



// AuthInfo 是自定义的 struct
struct AuthInfo auth_info;
string susername, spassword;

/* 写文件 */
// 清零
ZeroMemory ( &auth_info, sizeof ( auth_info ) );

susername = “tanggaowei@gmail.com”;
spassword = “000000″;

// 内存拷贝
memcpy(auth_info.username, susername.c_str(), susername.length());
memcpy(auth_info.password, spassword.c_str(), spassword.length());

// 定义打开输出流
ofstream fout(”mbc.dat”, ios::binary);

// 写入
fout.write((char *)(&auth_info), sizeof(auth_info));

// 关闭输出流
fout.close();

/* 读文件 */
ZeroMemory ( &auth_info, sizeof ( auth_info ) );

ifstream fin ( “mbc.dat”, ios::binary );

fin.read((char *)(&auth_info), sizeof(auth_info));

susername = auth_info.username;
spassword = auth_info.password;

ZeroMemory ( auth_info.username, 100 ); // AuthInfo.username[100]
ZeroMemory ( auth_info.password, 50 ); // AuthInfo.password[50]

memcpy(auth_info.username, susername.c_str(), susername.length());
memcpy(auth_info.password, spassword.c_str(), spassword.length());

fin.close();

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧