看过书后知道二进制写文件:数据在文件里面就是按照内存里面真实情况,不用转换直接写,对于字符将其转化为对应的ascii码存储,文本模式写文件:字符模式跟二进制一样先转换为ascii码,然后写,非字符先转化为字符然后再写其对应的ascii码文本模式的文件可以用记事本打开,我们能看懂内容,在具体的函数实现上,FILE  *file;file=fopen("test.txt","wt")发现这样我将一个数组,short buf[]={1,2,3,4}写入文件test.txt,用记事本打开后还是乱码,这是问什么呢,我的打开模式已经是文本模式(wt)了啊,
而我先sprintf将buf格式化到一个字符串中,然后用记事本打开能看到内容,这是为什么呢,虽然会做了,还想搞清楚其中的道理。
请知道的朋友指教,也请大家不用粘一大堆文章说自己看,我已经搜了不少文章了。谢谢了。

解决方案 »

  1.   

    short buf[]={1,2,3,4};  
    在内存中是  00 01 00 02 00 03 00 04    没有一个是可显示字符而ascii的1 2 3 4在内存中对应的则是 0x31  0x32  0x33  0x34
    LZ应该把基本概念搞清楚
      

  2.   

    说错了
    short buf[]={1,2,3,4};   
    在内存中是  01 00 02 00 03 00 04 00在内存中高位在后,低位在前,不好意思
      

  3.   


    谢谢你的回复,但是,我开始的打开方式已经是wt啊,就是文本方式读写啊,这样它难道不是就按照ascii吗的方式写吗
      

  4.   

    我已经是用文本打开方式已经是wt啊,那我用这个方式打开,函数fwrite("test.dat",buf,3,file),写的时候写的是什么东西呢。