CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何将字符串保存为二进制文件

楼主chinazuo305elong(76个球迷)2006-02-05 14:20:20 在 VC/MFC / 基础类 提问

如何将字符串保存为二进制文件  
  例如:    
    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

相关问题

  • 如何把一个PChar变量指向的字符串保存到二进制文件里,又怎样从二进制文件读出它?
  • 请教高手!用Vc++如何把字符串保存为二进制文件? 谢谢!
  • 用javascript怎么读取图片文件的内容保存为字符串形式(比如读成二进制)
  • 用内存映射文件以二进制保存字符串数组,字符串可以不以\0结尾吗?
  • **** 关于将字符串写进二进制文件
  • 字符串写入到二进制文件
  • 字符串转二进制
  • 如何将字符串按二进制格式存储到文件里面?
  • 请问如何在一个二进制文件中查找一个字符串?
  • [求助]C++关于字符串在二进制文件中读写的问题

关键词

  • 文件
  • 二进制
  • 字符
  • 函数
  • 加密
  • ascii码
  • 系统
  • 内容
  • 数据
  • document

得分解答快速导航

  • 帖主:chinazuo305elong
  • goodboyws
  • DentistryDoctor
  • thisisll
  • wangk
  • RockHwnd
  • lzzqqq
  • lzzqqq
  • wangk

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo