C++将字符串写入文档再读出来的有关问题

C++将字符串写入文档再读出来的问题
我将一串字符串写入文档,然后从文档中读出来,字符串有细微偏差,请问如何解决。
写的方法:
C/C++ code
fopen_s(&pRecorderFile,  "D:\\test.txt", "a+");
        if (NULL != pRecorderFile)
        {
            fwrite(encodedata.GetBuffer(0), encodedata.GetLength(), 1, pRecorderFile);
            encodedata.ReleaseBuffer();
            fclose(pRecorderFile);
        }

其中encodedata是CString类型的,就是我要写入文档的字符串。
读的方法
C/C++ code
CFile file("D:\\test.txt",CFile::modeRead);
    char *buf=new char[file.GetLength()];    
    memset(buf,0,file.GetLength());
    file.Read(buf,file.GetLength());
    file.Close();


我这个主要是用的DES加密解密,所以encodedata是加密之后的字符串,里面包含很多恶心的字符或者是不能正常显示的字符,然后读出来之后不能正常解密。我的加密解密在不写入文档的时候能保证加密解密正确。
请问下大家应如何才能保证写进文档和读文档的时候不会改变任何一个字符

------解决方案--------------------
既然是加密解密的,用二进制方式读写
------解决方案--------------------
1、你有做加密的话,最好用unsigned char也就是字节流,而不是字符串来存储你的资料;
2、文件读写都用二进制的方式,以免产生换行符等莫名其妙的问题,比如"ab+"。