
1。读取的文件本身是不存在什么格式的,而是读取者按照自己定义的格式来读取文件败友,所以文件本身不用区分什么txt,dat格式卖局
2。C++中的二进制格式和文本格式,事实没有什么本质区别,只是在以文本模式读取直接以字符串存储的文本文件,会存在很大便利,比如使用fscanf,fprintf等,C标准库会分析常见的字符,比如回车符,换行符等等,对于多行读取,可以不用手工搜索换行符
而以fread,fwrite读写则没有区别
基于此再回答楼主的问题:
1。rb指以二进制方式打开文件,并具有读权限,rw则指具有读写权限,具体根据需要定
2。你的代码我没有调试,但是从代码来看没发现整数变中枯让字符串的问题。
楼主指的可能是,写入文件之后,以记事本打开,没看到乱码,是吗?
如果写入的整数刚好对应的是可见字符的ASCII码,那么是不会出现乱码的,只有非可见字符,才会出现乱码
代码懒得氏稿洞写 给你个大概的思路在MFC下读取和写入文本可以用CStudioFile类对象,比用C读简单,它的参考资料如下:
******************************************************************
CStdioFile类成员
数据成员:
m_pStream 包含了歼枯一个指向打开文件的指针
构造:
CStdioFile 从一个路径或文件指针构造一个CStdioFile对象
文本读/写 :
ReadString 读取一行文本
WriteString 写一行文本
一个CStdioFile对象代表一个用运行时函数fopen打开的C运行时流式文件。
流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。
文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A)写入一个文本方式的CStdioFile对象时,字节对(0x0A,0x0D)被发送给该文件。当你读一个文件时,字节对(0x0A,0x0D)被翻译为一个字节(0x0A)。
当你读一个文件时,字节对(0x0A,0x0D)被翻译为一个字节(0x0A)。
CStdioFile不支持Duplicate,LockRange,和UnlockRange这几个CFile函数。如果在CStdioFile中调用敬仿了这几个函数,将会出现CNoSupported异常。
有关使用CStdioFile的更多信息,参见“Visual C++程序员指南”中的文章“MFC文件”,和“Microsoft Visual C++库参考”中的“Microsoft Visual C++ 6.0运行库参考”。
#include <afx.h>
**********************************************************************
文本文件的格式类似:1(回车) 2(回车)....
也就是一个数据一行
因为CStudioFile类读取文件时是一行一行读取的
将一行的内容读取到CString类对象中
然后再用CString函数的Format函数,将数字字符串格式化成整型数据并附给整型变量,这样就可以了
对数据处理后再写到源文件中时过程恰好相反(写数据时别忘了写回车符,"\r\n"或者"\n",具体哪个有用我忘了) 我就不多说了
VC声明BOOL WriteFile(
HANDLE hFile, // 文件句柄
LPCVOID lpBuffer, // 数据缓存区指针
DWORD nNumberOfBytesToWrite, // 你要写的字节数
LPDWORD lpNumberOfBytesWritten, // 用于保存实际写入字节数的存储区域的指针
LPOVERLAPPED lpOverlapped // OVERLAPPED结构体指针
)
[编辑本段]功能说明:
从文件指针指向的位置开始将数据写入到一个文件中, 且支持同亏裂步和异步 *** 作,
如果文件打开方式没有指明FILE_FLAG_OVERLAPPED的话,当程序调用成功时,它将实际写入文件的字节数保存到lpNumberOfBytesWriten指明的地址空间中
如果文件要交互使用的话,当函数调用完毕时要记得调整文件指针
[编辑本段]参数说明
HANDLE hFile, 需要写入数据的文件指针,这个指针指向的文件必须是GENERIC_WRITE access 访问属性的文件
LPOVERLAPPED lpOverlapped OVERLAPPED结构体指针,如果文件是以FILE_FLAG_OVERLAPPED方式打开的话,那么这个指针就不能为NULL
[编辑本段]返回值
调亩渣用迅空悄成功,返回非0
调用不成功,返回为0
-----------------------------------------------‘
把你写入的实际字节数存入&dwWrites,也就是此函数完成后,实际写入的字节数是dwWrites.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)