在Visual C++中使用fopen()函数来读写文件

转帖资料如下:

在Visual C++中使用fopen()函数来读写文件


很多使用过Turbo C的朋友喜欢用fopen()函数来读写文件,在Visual C++环境中您也可以使用fopen()来读写文件。而且您还可以使用Visual C++中的标准的打开文件对话框,这样可以使选取读写文件的路径更方便。具体的做法是这样的。
首 先您需要使用到MFC基本类库,在您原有的Visual C++程序中加上一个由CFileDialog类派生的新类,例如是CMyFileDialog,然后用这个新类定义一个对象,例如是:myDlg,使用 这个对象的DoModal()方法,就可以呼出打开文件的对话框。这样,您只要把被选中的路径名及文件名传送给fopen()函数就可以打开读写这个文件 了。

CMyFileDialog myDlg(true);
定义一个对话框对象
myDlg.DoModal();
呼出打开文件对话框
CString fileName;
定义一个Cstring类型的字符串来存储文件的路径及文件名
fileName=myDlg.GetPathName();
得到文件的路径及文件名

由于fopen()函数中需要的文件名参数是字符型的,所以我们还需要把CString类型的文件名转换为字符类型的变量。

int i, length;
定义i作为循环变量,定义length作为文件路径及文件名的长度
Char* FileName;
定义char型的字符指针来存储文件名,给fopen()函数使用
length=fileName.GetLength();
把文件名的长度赋给length变量
FileName=new char[length];
给char型的指针变量FileName分配内存空间
for(i=0;i<length;i++)
把CString型变量fileName中的字符一个一个地赋给char型的指针变量FileName
*(FileName+i)=fileName.GetAt(i);

*(FileName+length)=NULL;
在FileName变量的最后加上一个结束标志

这样,您就要吧使用fopen(FileName,"w")来写文件,或者是用fopen(FileName,"r")来读文件了。FileName就是使用打开文件对话框得到的文件路径及文件名。

 

总结:其实这种方法我已试过,还是有问题,程序方法正确性以待以后验证。fileread还是可以实现的。

最后的实现方法:

CFileDialog FileDlg(TRUE);
 FileDlg.m_ofn.lpstrTitle = TEXT("open yuv");
 FileDlg.m_ofn.lpstrFilter = TEXT("yuv file/0*.yuv/0all files/0*.*/0/0");

 if(FileDlg.DoModal()==IDCANCEL)
 {
  return;
 } 

 

 if(m_hFile)
 {
  CloseHandle(m_hFile);
  m_hFile=NULL;
 }

HWND m_hFile;

 m_hFile=CreateFile(FileDlg.GetPathName(),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

 

int f;f是帧数

SetFilePointer(m_hFile,f*(draw_width*draw_height*1.5),NULL,FILE_BEGIN);
ReadFile(m_hFile,lpAllYUV,draw_height*draw_width*1.5,&dwRead,NULL);

谨以此记录

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/prophet08/archive/2007/04/26/1585476.aspx

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值