社区
C语言
帖子详情
怎样获得CFile.Read读到的字符数?
Liulingbing
2003-10-17 08:23:27
RT
...全文
167
5
打赏
收藏
怎样获得CFile.Read读到的字符数?
RT
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zoohoo
2003-10-17
打赏
举报
回复
就是read函数的返回值嘛,如下:
CFile::Read
virtual UINT Read( void* lpBuf, UINT nCount );
throw( CFileException );
Return Value
The number of bytes transferred to the buffer. Note that for all CFile classes, the return value may be less than nCount if the end of file was reached.
njuhuangmy
2003-10-17
打赏
举报
回复
如标题 所说, Read 函数必须指定读入的长度的阿
当然,这个 cfile.Read(buf, size); 读入的长度应该 是 小于 等于 size 的!!
返回值 就是 读入的长度
njuhuangmy
2003-10-17
打赏
举报
回复
文件的打开 之类 就不说它了
cfile.GetLength() 取得 文件的大小
cfile.SeekToBegin() 确保返回 文件头
cfile.Read() 读入
Liulingbing
2003-10-17
打赏
举报
回复
或者这样问,怎么样把一个CFile关联的字符文件所有字符读到一个CString对象里。
Liulingbing
2003-10-17
打赏
举报
回复
The number of bytes is not equal to the chacater readed.
MFC文件操作
C
File
//创建/打开文件 C
File
file
;
file
.Open(_T("test.txt"),C
File
::modeCreate|C
File
::modeNoTruncate|C
File
::mode
Read
Write); 文件打开模式可组合使用,用“|”隔开,常用的有以下几种: C
File
::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。 C
File
::modeNoTruncate:以追加方式打开,如果文件存在,打开并且不将文件长度置零,如果文件不存在,会抛出异常。一般与C
File
::modeCreate一起使用,则文件不存在时,新建一个文件;存在就进行追加操作。 C
File
::mode
Read
Write:以读写方式打开文件。 C
File
::mode
Read
:只读。 C
File
::modeWrite:只写。 //写入
数
据 CString strValue = "Hello World!";
file
.Write(strValue,strValue.GetLength()); //追加
数
据
file
.SeekToEnd(); //将指针移至文件末尾进行追加
file
.Write(strValue,strValue.GetLength()); //关闭文件
file
.Close(); CStdio
File
CStdio
File
是C
File
的派生类,对文件进行流式操作,对于文本文件的读写很有用处,可按行读取写入。 //写入
数
据 CString strValue = "Hello World!";
file
.WriteString(strValue); //读取
数
据 CString str
Read
;
file
.
Read
String(str
Read
); 当文件存在多行
数
据需要逐行读取时,可用函
数
BOOL CStdio
File
::
Read
String(CString& rString),当遇到"\n "时读取截断,如果文件未读完,返回true,否则返回false。 //逐行读取文件内容,存入str
Read
while(
file
.
Read
String(str
Read
)) { ...; } 各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。 1.文件的查找 当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类C
File
Find,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。 CString str
File
Title; C
File
Find finder; BOOL bWorking = finder.Find
File
("C:\\windows\\sysbkup\\*.cab"); while(bWorking) { bWorking=finder.FindNext
File
(); str
File
Title=finder.Get
File
Title(); } 2.文件的打开/保存对话框 让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类C
File
Dialog用于实现这种功能。使用C
File
Dialog声明一个对象时,第一个BOOL型参
数
用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。 在构造C
File
Dialog对象时,如果在参
数
中指定了OFN_ALLOWMULTISELECT风格,则在此对话框中可以进行多选操作。此时要重点注意为此C
File
Dialog对象的m_ofn.lpstr
File
分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。下面这段程序演示了文件打开对话框的使用方法。 C
File
Dialog m
File
Dlg(TRUE,NULL,NULL, OFN_HIDE
READ
ONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, "All
File
s (*.*)|*.*||",AfxGetMainWnd()); CString str(" ",10000); m
File
Dlg.m_ofn.lpstr
File
=str.GetBuffer(10000); str
一个简单的CDIB类
〉CDIB功能 提供针对设备无关位图的一系列操作。 〉CDIB使用方法 将DIB目录复制到工程的原文件目录中。 在工程的Source
File
s中添加DIB文件夹,并导入DIB目录中的所有文件。 在需要使用DIB的文件中添加 include "dib.h" using namespace DIB; 1)读取Bitmap图片 //CDib对象可以从读取Bitmap,DIB文件
数
据。 //之前需要创建C
File
对象,而后从C
File
对象读取
数
据。 CDib m_Dib; C
File
* pf; pf=new C
File
; pf->Open(m_ImageName,C
File
::mode
Read
); //m_ImageName为路径加文件名,如"C:\\Img\\My_Bitmap.bmp" m_Dib.
Read
(pf); pf->Close(); delete pf; 2)保存CDib对象到文件 //m_Dib是包含有图像
数
据CDib对象 //p
File
指向已经创建的可对文件进行写操作的C
File
对象 m_Dib.write(C
File
* p
File
) 3)从CDIB
获得
图像
数
据 //m_Dib 包含有图像
数
据CDib对象 //realDataFLag 选择是返回真实图像
数
据,还是返回灰度
数
据的布尔值变量(bool),为真时返回的是图像真实
数
据。 unsigned char * img; img=m_Dib.GetImgPtr(realDataFLag); //
获得
的图像
数
据是以左上角为(0,0)点开始的从左至右, //从上至下,具有真实宽度(非补4)的
数
据 //realDataFlag为真时返回的是图像真实
数
据 //realDataFlag为假时返回的是灰度化的图像
数
据 4)将图像
数
据赋给CDib对象 //m_Dib是包含有图像
数
据CDib对象 //img 指向图像
数
据的无符号
字符
型指针(unsigned char *) //realDataFLag 指明输入的是真实图像
数
据,还是返回灰度
数
据的布尔值变量(bool),为真时输入的是图像真实
数
据。 m_Dib.SetImgPtr(img,realDataFlag);//设置图像
数
据 5)从图像
数
据创建CDib对象 CDib m_Dib m_Dib.CreateDib(pImgData,width,height,nBitCount);//pImgData为指向图象
数
据的指针 //nBitCount一个像素所用的比特
数
目前仅支持8 6)由CDib对象创建Bitmap对象 //m_Dib是包含有图像
数
据CDib对象 HBITMAP bitmap; CDC * pDC=AfxGetApp()->GetMainWnd()->GetDC(); bitmap=m_Dib.CreateBitmap(pDC)//输入值为 CDC * ,一般可通过AfxGetApp()->GetMainWnd()->GetDC()
获得
7)显示图象中的特殊信息 在处理过程中将图像中的特殊信息用251~255表示(对彩色图像,将R、G、B赋予251~255的相同
数
值) 将灰度图象中灰度值大于等于251的不需特殊显示的像素赋为250, 将彩色图像中R=G=B且大于等于251的不需特殊显示的像素赋为(250,250,250) 而后按4)中描述的将图像
数
据赋给CDib对象 最后调用EnhanceColor()将CDib对象转化为可以显示特殊信息的图像
VC6.0 在对话框中打开TXT文件.rar
VC 6.0 基于mfc 打开txt文件在一个对话框窗口中,直接显示出TXT文件的内容,程序功能挺简单的,以下是相关代码: //生成一个对话框 lpszOpen
File
= new C
File
Dialog (TRUE,"","",OFN_
FILE
MUSTEXIST |OFN_HIDE
READ
ONLY , "文件类型(*.txt)|*.txt|所有文件(*.*)|*.*|"); if(lpszOpen
File
->DoModal() == IDOK )//假如点击对话框确定按钮 {
file
PathName = lpszOpen
File
->GetPathName();//得到打开文件的路径 SetWindowText(
file
PathName);//在窗口标题上显示路径 } if(
file
PathName == "") return; if(!
file
.Open(
file
PathName,C
File
::mode
Read
)) { MessageBox("can not open
file
!"); return; }
VC MFC文件读写操作.rar
VC MFC文件读写操作的范例源码,本示例中涉及到CStdio
File
写文件、C
File
读写文件 、C
File
Find、Shell操作。通过菜单可选择对应操作的执行结果,可比较一下与传统的文件操作有何不同。 lpbi->pszDisplayName=NULL; lpbi->lpszTitle="请选择要遍历的目录位置:"; lpbi->ulFlags=BIF_RETURNONLYFSDIRS|BIF_STATUSTEXT; lpbi->lpfn=NULL; //显示外壳文件夹以便用户选择 LPITEMIDLIST lpitemidlist=SHBrowseForFolder(lpbi); char path[MAX_PATH]; //转换项目标志府列表为一个系统文件路径 SHGetPathFromIDList(lpitemidlist,path); delete lpbi; //获取控件指针 CWnd* pWnd=(CWnd*)GetDlgItem(IDC_dir); //设置其标题为当前路径信息 pWnd->SetWindowText(path); //更新对话框 UpdateData(FALSE);
驱动程序设计基础专题-
file
disk源码分析
转自看雪的CCDeath 【文章标题】: WinMount虚拟磁盘深入研究(-)之
file
disk源代码详细分析 【下载地址】: 自己搜索下载 【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! -------------------------------------------------------------------------------- 【详细过程】 我的驱动入门三终结版,还再学习中。由于个人也有些事情要处理,研究起刘涛涛WinMount的虚拟 磁盘,而且这方面的书籍,貌似乎没见过,只有傻傻的几K代码存在,没注释什么的,整体框架也没说。 虚拟光驱用实现文件来模拟磁盘的原理,是文件系统驱动程序。 把
file
disk驱动安装,查看install.txt文件。 1.Copy the driver (
file
disk.sys) to %systemroot%\system32\drivers\. 2.Import
file
disk.reg to the Registry. 3.Reboot. 4.Use the program
file
disk.exe to mount/umount
file
s, for an example of use see the
file
example.txt. 可以不用重起机子的方法,找一个动载加载驱动工具:DriverMonitor不错了。然后在“开始菜单”-> "运行"输入 "net start
file
disk" 出现:“ 请求的服务已经启动”。这个必须得成功才行哦。 接下来注意点。cmd后 出现这个目录 C:\Documents and Settings \Administrator>,在接下来敲入
file
disk /mount 0 c:\temp\
file
disk.img 8M f: C:\Documents and Settings \Administrator>
file
disk /mount 0 c:\temp\
file
disk.img 8M r: 回车一下。 出现"
File
Disk:系统找不到指定路径" 。原因就出在这 "c:\temp\
file
disk.img" 中的C:\temp要这个目录才行。至于
file
disk.img不是必须,会自动创建。 如果有出现"
File
Disk:函
数
不正确" 中的“
file
disk /mount 0 ”中"0"代号已经被使用。可以改为"1". 查看一下,结果就出现一个还未格式化 8M R磁盘,查看C:\temp下生成一个
file
disk.img也8M。想卸载 掉"
file
disk /umount r:". 还可以创建很大的虚拟磁盘,你把"8M"改换其他的就是了。 以上如果都没出现结果,基本上就没兴趣继续研究下去了,我看到了很多人初学
file
disk都遇到以上这 些问题(包括我在内) ,把我折腾了半天。 先来分析驱动层代码,后来分析应用层代码。更详细的请看附件里的源代码。我对代码工程方式重新布 局,用起来更方便。 ===================================//先来分析驱动层代码 1.对
file
disk.h进行分析 #define
FILE
_DEVICE_
FILE
_DISK 0x8000//用户定义范围0x8000~ #define IOCTL_
FILE
_DISK_OPEN_
FILE
CTL_CODE(
FILE
_DEVICE_
FILE
_DISK, 0x800, METHOD_BUFFERED,
FILE
_
READ
_ACCESS |
FILE
_WRITE_ACCESS) #define IOCTL_
FILE
_DISK_CLOSE_
FILE
CTL_CODE(
FILE
_DEVICE_
FILE
_DISK, 0x801, METHOD_BUFFERED,
FILE
_
READ
_ACCESS |
FILE
_WRITE_ACCESS) #define IOCTL_
FILE
_DISK_QUERY_
FILE
CTL_CODE(
FILE
_DEVICE_
FILE
_DISK, 0x802, METHOD_BUFFERED,
FILE
_
READ
_ACCESS) typedef struct _OPEN_
FILE
_INFORMATION { LARGE_INTEGER
File
Size;//文件大小 BOOLEAN
Read
Only;//只读属性 USHORT Fil
C语言
69,381
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章