文件操作系列之一——(C Run-Time Library)
2010-07-13 07:12
127 查看
现在要做一个东西出来,因为涉及的知识面比较广,所以需要系统的把知识整理一下,刚好用到文件操作这一块,就整理了一下相关的要点。
操作文件的方式很多,这里重点介绍几个,本次介绍C Run-Time Library的文件操作方式。
C Run-Time Library中操作文件的方式又有两种,一种是直接使用库的API来进行;一种是使用FILE的I/O标准流操作来进行。下面分别说明。
一使用C Run-Time Library库的API来操作文件
。因为C Run-Time Library是过程语言,所以没有类的概念,里面的函数大多是过程的。如下面的例子:
读文件:
写文件:
二使用标准I/O的FILE流操作文件。
其实这种方式也属于C Run-Time Library库函数,不过它引入新的结构FILE,操作处理上面要比直接使用库函数简单一些。如下面的例子:
读文件:
写文件:
代码很简单,不用太多解释,细节可参考MSDN上面的函数说明,也可参考微软的C Run-Time Library函数参考手册(后附做好的手册下载)。
使用Run-Time Library函数来操作文件是非常有效率的,它就如C/C++语言的优势一样,依赖语言而脱离系统,而且有比较高的内存利用率和较低的时间花费。
可缺点也是一样的,安全性低,直接操作内存的复杂度高。
对于使用Run-Time Library感兴趣的,可参考微软《C Run-Time Library函数参考手册》。
附,本系列示例代码
,该代码在VS2008+XPsp3下测试通过。
下一篇,开始讲述面向对象方式的文件操作方式
操作文件的方式很多,这里重点介绍几个,本次介绍C Run-Time Library的文件操作方式。
C Run-Time Library中操作文件的方式又有两种,一种是直接使用库的API来进行;一种是使用FILE的I/O标准流操作来进行。下面分别说明。
一使用C Run-Time Library库的API来操作文件
。因为C Run-Time Library是过程语言,所以没有类的概念,里面的函数大多是过程的。如下面的例子:
读文件:
]char buffer[60000]; int fh; unsigned int nbytes = 60000, bytesread; /* Open file for input: */ if( _sopen_s( &fh, "1.txt", _O_RDONLY, _SH_DENYNO, 0 ) ) { perror( "open failed on input file" ); exit( 1 ); } /* Read in input: */ if( ( bytesread = _read( fh, buffer, nbytes ) ) <= 0 ) perror( "Problem reading file" ); else printf( "Read %u bytes from file/n", bytesread ); _close( fh );
写文件:
]int fileHandle = 0; unsigned bytesWritten = 0; char buffer[] = "This is a test of '_write' function"; if ( _sopen_s(&fileHandle, "write.o", _O_RDWR | _O_CREAT, _SH_DENYNO, _S_IREAD | _S_IWRITE) ) return; if (( bytesWritten = _write( fileHandle, buffer, sizeof( buffer ))) == -1 ) { switch(errno) { case EBADF: perror("Bad file descriptor!"); break; case ENOSPC: perror("No space left on device!"); break; case EINVAL: perror("Invalid parameter: buffer was NULL!"); break; default: // An unrelated error occured perror("Unexpected error!"); } } else { printf_s( "Wrote %u bytes to file./n", bytesWritten ); } _close( fileHandle );
二使用标准I/O的FILE流操作文件。
其实这种方式也属于C Run-Time Library库函数,不过它引入新的结构FILE,操作处理上面要比直接使用库函数简单一些。如下面的例子:
读文件:
]char filename[50]; cout<<"Pleast input the file name you want to Read:/n"; cin>>filename; FILE *stream; char list[30]; int numread; if( fopen_s( &stream, filename, "r+t" ) == 0 ) { // Attempt to read in 25 characters numread = fread( list, sizeof( char ), 25, stream ); printf( "Number of items read = %d/n", numread ); printf( "Contents of buffer = %.25s/n", list ); fclose( stream ); } else printf( "File could not be opened/n" );
写文件:
]char filename[50]; cin>>filename; FILE *stream; char list[30]; int i, numwritten; // Open file in text mode: if( fopen_s( &stream, filename, "w+t" ) == 0 ) { for ( i = 0; i < 25; i++ ) list[i] = (char)('z' - i); // Write 25 characters to stream numwritten = fwrite( list, sizeof( char ), 25, stream ); printf( "Wrote %d items/n", numwritten ); fclose( stream ); } else printf( "Problem opening the file/n" );
代码很简单,不用太多解释,细节可参考MSDN上面的函数说明,也可参考微软的C Run-Time Library函数参考手册(后附做好的手册下载)。
使用Run-Time Library函数来操作文件是非常有效率的,它就如C/C++语言的优势一样,依赖语言而脱离系统,而且有比较高的内存利用率和较低的时间花费。
可缺点也是一样的,安全性低,直接操作内存的复杂度高。
对于使用Run-Time Library感兴趣的,可参考微软《C Run-Time Library函数参考手册》。
附,本系列示例代码
,该代码在VS2008+XPsp3下测试通过。
下一篇,开始讲述面向对象方式的文件操作方式
相关文章推荐
- 一天一个shell命令 linux文件内容操作系列-cat命令详解
- 一天一个shell命令 linux文件操作系列-ln命令详解
- TC官方文档翻译11----文件操作API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- Linux常用文件操作命令系列 - 统计文件个数等
- Git学习系列(二)创建本地仓库及文件操作
- 【Python】系列简记--28 文件操作
- ios助手开发系列(四):文件操作系列1 - 获取设备文件信息 AFCFileInfoOpen函数和AFCKeyValueRead函数
- Html5 学习系列(四)文件操作API
- Python学习系列(五)(文件操作及其字典)
- Cocos2d-x项目移植到WP8系列之四:文件操作
- C#探秘系列(七):XML文件操作(一)
- WP8开发系列3:WP7与WP8在文件IO操作上的区别 推荐
- 大数据学习系列(3)-- 文件权限的操作
- 文件操作全系列
- watir学习系列--文件操作(创建文件)
- Python学习系列之文件操作
- ios开发系列之文件的写入读取,NSUserDefaults存储数据,NSFileManager操作文件和文件夹
- python系列学习二——文件操作及异常处理
- ICopyHook监控文件夹操作 文件操作监控系列之一
- IO操作系列之文件类型获取