VC++ chap12 file
file operation
_______C语言对文件操作的支持
fopen accepts paths that are valid on the file system at the point of execution;
____write
FILE *pFile = fopen("1,txt","w"); //firstly, file should be opened
fwrite("a carrot",1,strlen("a carrot"),pFile);
fseek(pFile,10,SEEK_END); //set the next write position
fwrite("welcome angle",1,strlen("welcome angle"),pFile);
fflush(pFile); //write from buffer to file, because C apply file buffer system, data will first be stored in buffer until the buffer is full,if we want to write data into file immediately fflush is called. or fclose function to close the file.
____read
FILE *pFile = fopen("1.txt","r");
char *pBuf;
fseek(pFile,0,SEEK_END); //move to end of file
int len = ftell(pFile); //get the len of file
pBuf = new char[len + 1]; //need '\0' for ending
fread(pBuf,1,len,pFile);
pBuf[len] = 0;
fclose(pFile);
MessageBox(pBuf);
_
AT: 1),读取文件数据时,如果是字符数据,在定义用来保存该数据的字符数组时,需多分配一个字节,用来存放表示字符串结尾的字符: ‘\0’. 或者将数组先清零 memset(ch, 0,100);
2),读取文件内容时,应正确地设置文件指针的位置。
fseek(pFile,0,SEEK_SET);
rewind(pFile); 将文件指针重新放置到文件开始处。
_________C++读文件
添加头文件 #include <fstream.h>
ifstream ifs("4.txt");
char ch[100];
memset(ch,0,100);
ifs.read(ch,100);
ifs.close();
MessageBox(ch);
C++写文件
ofstream ofs("2.txt");
ofs.write("sunxin",strlen("sunxin"));
ofs.close();
3,W32 API对文件的操作
读文件
HANDLE hFile;
hFile=CreateFile("5.txt",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
char ch[100];
DWORD dwReads;
ReadFile(hFile,ch,100,&dwReads,NULL);
ch[dwReads]=0;
CloseHandle(hFile);
MessageBox(ch);
写文件
HANDLE hFile;
hFile = CreateFile("5.txt",GENERIC_WRITE,0,NULL,CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwWrites;
WriteFile(hFile,"sunxinweb",strlen("sunxinweb"),&dwWrites,NULL);
CloseHandle(hFile);
_________ MFC 对文件的读取和写入
读文件
CFile file("6.txt",CFile::modeRead);
char *pBuf;
DWORD dwFileLen;
dwFileLen = file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
file.Close();
MessageBox(pBuf);
写文件
CFile file("6.txt",CFile::modeCreate|CFile::modeWrite);
file.Write("sunxin",strlen("sunxin"));
file.Close();
_______打开文件对话框,另存为对话框 CFileDialog
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle="my file open dialog";
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
fileDlg.m_ofn.lpstrDefExt="txt";
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeRead);
char *pBuf;
DWORD dwFileLen;
dwFileLen = file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
file.Close();
MessageBox(pBuf);
}
Write:
CFileDialog fileDlg(FALSE); //build save as dialog
fileDlg.m_ofn.lpstrTitle="my file save dialog";
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
fileDlg.m_ofn.lpstrDefExt="txt";
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeCreate|CFile::modeWrite);
file.Write("hello rabbit",strlen("hello rabbit"));
file.Close();
}
Note: CFileDialog 提供两个函数: GetFileName,GetFilePath
12.6 win.ini文件的访问
___________二进制文件和文本文件
C中默认按照文本方式打开文件的。
文件:计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式。
分为文本文件和二进制文件。
当按照文本方式向文件中写入数据时,一旦遇到“换行”(ascll码为10)会转换为“回车-换行”(ascll码分别为13,10),读的时候,则反过来。
所以写入和读取时格式需统一。
文本文件存放的每一个字节都可以转换为一个可读的字符。如打开一个文本格式文件,文件中存储的每一个字节的数据都要作为ascll码转换为相应的字符,如果它的某一个字节的数据转换为字符后是不可读的,就会显示乱码。
itoa(98341, ch,10); //将整数转化为字符。
VC++ chap12 file的更多相关文章
- VC 2008 Express下安装OpenCV2.3.1
VC 2008 Express下安装OpenCV2.3.1 注意: 下列文档以VC2008 Express为例,VC2010下的配置应与本文档类似. VC 6.0不被OpenCV 2.3.1支持. ...
- Rational Rose 2003 逆向工程转换C++ / VC++ 6.0源代码成UML类图
目录 1.安装&破解Rational Rose 2003 1.1 安装Rose 2003 1.2 破解Rose 2003 1.3运行出错“没有找到suite objects.dl” 2. Ra ...
- 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】
文章来自于:http://blog.renren.com/share/246648717/8171467499 基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴 ...
- VC6使用技巧
1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}.方括号[].圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”.如果括号匹配正确,光标就跳到匹配的括号处,否则 ...
- vs2005配置OpenCv2.3.1
编译OpenCv 1 用CMake导出VC++项目文件 运行cmake-gui,设置where is the source code路径为OpenCV安装路径(本文档假定安装位置为:c:\OpenCV ...
- Rational Rose 2003 逆向工程转换C++源代码成UML类图
主要介绍用户如何使用Rose的逆向工程生成UML模型,并用来进行C++代码的结构分析. Rational Rose可以支持标准C++和Visual C++的模型到代码的转换以及逆向工程.下面将详细地说 ...
- VC6.0实用小技巧
VC6.0的若干实用小技巧 .检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}.方括号[].圆括号()和尖括号<>)前面,键入快捷键 “Ctrl+]”.如果括号匹配正确, ...
- vc6.0的一些快捷键
1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}.方括号[].圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”.如果括号匹配正确,光标就跳到匹配的括号处 ...
- Create a Visual C++ Wizard for Visual Studio 2005
from:http://www.codeguru.com/cpp/v-s/devstudio_macros/customappwizards/article.php/c12775/Create-a-V ...
随机推荐
- python数据结构与算法——栈
# 栈# 其实python里面的list就可以当栈使用啦,用collections.deque也可以# 1. 入栈 list.append(item)# 2. 出栈 item = list.pop() ...
- readonly背景色(css)
input{ background-color:expression(this.readOnly==true?"#EEEEEE":"#FFFFFF"); } i ...
- SQL数据库的十条命令
--(1)查询每个总学时数 select GradeId,SUM(classHour) from subject group by GradeId order by(SUM(classHour)) - ...
- 怎样用JS获取ASP.NET服务器控件的客户端ID
虽然简单,不过曾经困扰多时,还是记录一下吧. 来源:http://mou518.blog.163.com/blog/static/1756052222010111434428828/ 因为经常服务器控 ...
- POJO类中的任何布尔类型的变量,都不要加is
POJO类中的任何布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误. 定义为基本数据类型boolean isSuccess:的属性,它的方法也是isSuccess(),HSF框架在反向解 ...
- [网络] 用 OpenVPN 实现站对站 VPN 服务
一.简介 一般情况下站对站 VPN 是用 cisco.juniper.h3c等品牌的专业设备实现的,这些设备性能可靠,价格较贵. 如果现有设备不支持,而且不能用新设备替换,或者部门预算有限,那么只能用 ...
- mysql:字符串转换为日期类型
函数:DATE_FORMAT http://www.w3school.com.cn/sql/func_date_format.asp
- ADF_Desktop Integration系列3_ADF桌面集成入门之重定义ADF Desktop Excel
2013-05-01 Created By BaoXinjian
- php 二维数组(没啥技术含量)
<?php $cars = array( array('benchi',20,18), array('baoma',30,21), array('aodi',23,9) ); echo $car ...
- vim 学习日志(4):多窗口使用技巧
原文地址: http://blog.csdn.net/devil_2009/article/details/7006113 vim多窗口使用技巧 1.打开多个窗口打开多个窗口的命令以下几个:横向切割窗 ...