如何将字符串保存为二进制文件
如何将字符串保存为二进制文件
例如:
FILE *fp;
char a[3]="dd";
fp=fopen(fp,"my.save","wb");
fwrite(a,2,fp);
fclose(fp);
但是这样存出来的文件是 文本的,就是说,我可以用记事本打开的.
谢谢
问题点数:100、回复次数:11Top
1 楼goodboyws(深夜不眠者(VCMVP))回复于 2006-02-05 14:22:47 得分 10
你还不知道什么叫二进制文件吧
Top
2 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-02-05 14:28:42 得分 10
你本来存储的就是可见字符呀!Top
3 楼chinazuo305elong(76个球迷)回复于 2006-02-05 14:29:53 得分 0
是的,我就是想知道,我在存储之前,如何转换为二进制的,好象没有atob这样的函数吧??Top
4 楼thisisll(学习王高李,有个好身体)回复于 2006-02-05 14:33:21 得分 10
fopen(打开文件)
相关函数 open,fclose
表头文件 #include<stdio.h>
定义函数 FILE * fopen(const char * path,const char * mode);
函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。
返回值 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。
附加说明 一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。
范例 #include<stdio.h>
main()
{
FILE * fp;
fp=fopen(“noexist”,”a+”);
if(fp= =NULL) return;
fclose(fp);
}
上面说清楚了 加个'b'
Top
5 楼wangk(倒之)回复于 2006-02-05 14:47:09 得分 10
楼主对二进制文件的概念还是不大明白啊。Top
6 楼RockHwnd(0 error(s), 0 warning(s), Many bugs)回复于 2006-02-05 14:55:25 得分 10
二进制文件和文本文件都是0,1组成,但文件系统对他们的解释不一样,一般系统调用(或WIN32API)都会分为字符
式和二进制式(或流式).文本或字符文件代表慢速设备,而二进制文件代表可以大块数据操作的快速外设,二进制文件内容基本无意义,系统对它不加解释地传给调用者,解释由调用者负责.而对字符文件,系统把他理解为单字节的ASCII或多字节的UNICODE字符串,并且对其中的特殊字符(如回车等)加以特殊处理.所以同一个文件,可以使用不同类型的系统调用.
文本文件计算机会认为里面存储的都是ASCII码,所以显示的时候用对应的ASCII码显示,
其实也是0,1,序列,只不过有格式要求--必须是有效的ASCII码,否则写字版等度出来的就是一对乱麻
Top
7 楼lzzqqq(Jonersen)回复于 2006-02-05 14:56:45 得分 0
FILE* pf=fopen("c:\\log.txt","w");
fprintf(pf,"shit_t!!!");//写入字符串shit_t
fclose(pf);Top
8 楼lzzqqq(Jonersen)回复于 2006-02-05 15:18:44 得分 5
你磁盘上的所有文件都是以二进制存储的,都是二进制文件,有什么问题吗?Top
9 楼lzzqqq(Jonersen)回复于 2006-02-05 15:19:54 得分 5
你可以将每个存入的字符进行取反,然后再保存,从而可以达到某种程度的加密.Top
10 楼chinazuo305elong(76个球迷)回复于 2006-02-05 15:25:55 得分 0
好的,我明白你的意思是,我需要的是一种加密或压缩算法......Top
11 楼wangk(倒之)回复于 2006-02-05 15:41:54 得分 40
加密例子:
http://www.vckbase.com/document/viewdoc/?id=709
http://www.vckbase.com/document/viewdoc/?id=695
压缩:
http://www.vckbase.com/document/viewdoc/?id=1265Top




