- 浏览: 438936 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
open和fopen的区别:
1.缓冲文件系统
缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器而定。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等是带缓冲的。
2.非缓冲文件系统
缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据。非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度快,由于ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。本书只作简单介绍。
open, close, read, write, getc, getchar, putc, putchar 等是不带缓冲的。
前者带f的属于高级IO,后者是低级IO。
前者返回一个文件指针,后者返回一个文件描述符(用户程序区的)。
前者有缓冲,后者无缓冲。
高级IO是在低级IO的基础上扩充而来的,在大多数情况下,使用高级IO。
http://blog.chinaunix.net/u/21067/showart_213410.html
open 是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,
fopen是C的库函数,返回的是一个指向文件结构的指针。
文件描述符是linux下的一个概念,linux下的一切设备都是以文件的形式操作.如网络套接字、硬件设备等。当然包括操作文件。
fopen是标准c函数。返回文件流而不是linux下文件句柄。
设备文件不可以当成流式文件来用,只能用open。
fopen是用来操纵正规文件的,并且设有缓冲的,跟open还是有一些区别。
一般用fopen打开普通文件,用open打开设备文件。
fopen是标准c里的,而open是linux的系统调用,他们的层次不同。
fopen可移植,open不能。
网友认为fopen和open最主要的区别是fopen在用户态下就有了缓存,在进行read和write的时候减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换;
表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比 fopen快。
转自:
http://blog.csdn.net/hairetz/archive/2009/05/05/4150193.aspx
==============================================================
1,fread是带缓冲的,read不带缓冲.
2,fopen是标准c里定义的,open是POSIX中定义的.
3,fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别.
4,fopen不能指定要创建文件的权限.open可以指定权限.
5,fopen返回指针,open返回文件描述符(整数).
6,linux/unix中任何设备都是文件,都可以用open ,read.
==============================================================
《C专家编程》说主要是涉及到系统。
区别不是缓冲,带f的是标准IO,代码可以移植,不带f只能在UNIX/LINUX系统调用。
一个是整数,一个是指针。
http://blog.chinaunix.net/u3/94284/showart_1898809.html
1.缓冲文件系统
缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器而定。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等是带缓冲的。
2.非缓冲文件系统
缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据。非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度快,由于ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。本书只作简单介绍。
open, close, read, write, getc, getchar, putc, putchar 等是不带缓冲的。
前者带f的属于高级IO,后者是低级IO。
前者返回一个文件指针,后者返回一个文件描述符(用户程序区的)。
前者有缓冲,后者无缓冲。
高级IO是在低级IO的基础上扩充而来的,在大多数情况下,使用高级IO。
http://blog.chinaunix.net/u/21067/showart_213410.html
open 是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,
fopen是C的库函数,返回的是一个指向文件结构的指针。
文件描述符是linux下的一个概念,linux下的一切设备都是以文件的形式操作.如网络套接字、硬件设备等。当然包括操作文件。
fopen是标准c函数。返回文件流而不是linux下文件句柄。
设备文件不可以当成流式文件来用,只能用open。
fopen是用来操纵正规文件的,并且设有缓冲的,跟open还是有一些区别。
一般用fopen打开普通文件,用open打开设备文件。
fopen是标准c里的,而open是linux的系统调用,他们的层次不同。
fopen可移植,open不能。
网友认为fopen和open最主要的区别是fopen在用户态下就有了缓存,在进行read和write的时候减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换;
表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比 fopen快。
转自:
http://blog.csdn.net/hairetz/archive/2009/05/05/4150193.aspx
==============================================================
1,fread是带缓冲的,read不带缓冲.
2,fopen是标准c里定义的,open是POSIX中定义的.
3,fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别.
4,fopen不能指定要创建文件的权限.open可以指定权限.
5,fopen返回指针,open返回文件描述符(整数).
6,linux/unix中任何设备都是文件,都可以用open ,read.
==============================================================
《C专家编程》说主要是涉及到系统。
区别不是缓冲,带f的是标准IO,代码可以移植,不带f只能在UNIX/LINUX系统调用。
一个是整数,一个是指针。
http://blog.chinaunix.net/u3/94284/showart_1898809.html
发表评论
-
float equal
2013-05-23 18:21 776- (BOOL)floatA:(float)f1 equalB ... -
C++序列化
2012-07-12 09:51 533http://hi.baidu.com/ewook/item/ ... -
C++著名内裤
2011-12-02 14:00 7691、C++各大有名库的介绍 ... -
C++写C
2011-09-06 17:23 585在C++中写C,标准头文件写法 #ifndef __AB ... -
errno.h
2011-05-05 14:27 647#define EPERM 1 ... -
__cplusplus
2011-04-21 15:09 702http://www.cnblogs.com/stonecra ... -
Pthread__常用
2011-04-21 11:46 807http://blogold.chinaunix.net/u/ ... -
常用预编译
2011-04-21 10:32 610#if defined(WIN32) || defined ... -
C++__容器
2011-04-18 10:16 519http://apps.hi.baidu.com/share/ ... -
C++模板
2011-03-29 14:27 594内容主要来至《钱能C++程序设计教程》&《C++ Pr ... -
交叉引用、前置声明
2011-03-02 09:40 767有两个类相互引用了,编译器报错。 原因是两个类交叉引用: A ... -
typedef的四个用途和两个陷阱
2010-12-14 12:34 609http://hi.baidu.com/changfeng01 ... -
第五届开源小组招新题目
2010-12-03 21:56 701这是学校的开源小组招新题。 08年时我是第二届的组长,不知不觉 ... -
string const char*
2010-12-02 16:13 733http://topic.csdn.net/u/2008092 ... -
CPP Container
2010-11-10 09:20 646延后整理。。。 -
C语言运算符优先级
2010-11-02 17:45 740优先级 运算符 ... -
point point
2010-11-02 17:23 580http://learn.akae.cn/media/ch23 ... -
位运算
2010-11-01 11:33 747千百年来,位运算始终没出现在我写的代码里,今天终于出现了。 ... -
Unix环境下操作特大文件
2010-11-01 11:03 567http://hi.baidu.com/jiangfeng11 ... -
GCC在C语言中内嵌汇编
2010-10-22 14:48 1331http://hi.baidu.com/liu_bin0101 ...
相关推荐
int read(char *file); /*------------初始化-----------------------*/ int format() { current = 2; currentPath="C:\\\\"; //当前路径 osPoint->format();//打开文件列表初始化 delete openlist; openlist=...
卷曲fopen、fread、fwrite 等所有函数在许多 C 程序中都很常见并且是标准的“习惯用法”。 通过提供具有与基于文件的版本相同的一般行为的 fcurl* 函数,但允许 URL 以其他方式使用文件名,这是一种尝试,允许现有的...
介绍Linux系统下两种文件编程接口,fopen、fclose、fread、fwrite (适合操作普通文件,C标准函数),open、close、read、write (适合操作设备文件、也可以操作普通文件Linux下接口),介绍目录相关操作函数,Makefile...
任务 I/O系统调用开销比较任务目的: 本任务主要目的在于了解I/O系统调用的特点并通过性能...请分别使用三种方法:(1)标准C的I/O库函数:fopen,fread和fwrite(2)Unix 的I/O函数:open.read 和write(3)Open 和mmap
You are visitor as of October 17, 1996. The Art of Assembly Language Programming <br>Forward Why Would Anyone Learn This Stuff? 1 What's Wrong With Assembly Language 2 What's Right With ...
size_t bytes_read = fread(result_frame, 1, frame_size, input_file); if (bytes_read != static_cast(frame_size) && ferror(input_file)) { fprintf(stdout, "Error while reading frame no %d from file %s...
3.4.2 read系统调用 83 3.4.3 open系统调用 84 3.4.4 访问权限的初始值 85 3.4.5 其他与文件管理有关的系统调用 88 3.5 标准I/O库1 3.5.1 fopen函数1 3.5.2 fread函数2 3.5.3 ...
3.4.3 open系统调用 84 3.4.4 访问权限的初始值 85 3.4.5 其他与文件管理有关的系统调用 88 3.5 标准I/O库1 3.5.1 fopen函数1 3.5.2 fread函数2 3.5.3 fwrite函数2 3.5.4 fclose函数2 ...
3.4.2 read系统调用 83 3.4.3 open系统调用 84 3.4.4 访问权限的初始值 85 3.4.5 其他与文件管理有关的系统调用 88 3.5 标准I/O库1 3.5.1 fopen函数1 3.5.2 fread函数2 3.5.3 ...
本程序采用的是后者。应该说,容错性能比较好。 <? $open = fopen(...//网页地址 $read = fread($open, 15000); fclose($open); $search = eregi("<!– Start in the news –>(.*)<!– End in the n
file.Open(this->m_path + strTitle,CFile::modeRead | CFile::typeBinary)) { AfxMessageBox(strTitle + "打开失败"); return; } /*获取文件名长度跟文件大小*/ filelen = file.GetLength(); filenamelen ...
从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。 普通文件是指驻留在磁盘或其它外部介质上的一个有序数据集,可以是源文件、目标文件、可执行程序; 也可以是一组待输入...
*/ function read_file_content($FileName) { //open file $fp=fopen($FileName,”r”); $data=””; while(!feof($fp)) { //read the file $data.=fread($fp,4096); } //close the file fclose($fp); //...
i/o operations(open, read, write, seek, close, fopen, fread, fwrite, fseek, fclose) . 3. process opeartions(fork, getpid, getppid, waitpid, exit). 4. string opeartions(printf, itoa, strlen, strcpy,...
// Open example model in binary read mode if ( pmx_file ) { char header[PMX_HEAD_LEN]; float version; fread( header, PMX_HEAD_LEN, 1, pmx_file ); // Read the header version = pmx_header_version( ...
数据块读写函数:fread和fwrite 格式化读写函数:fscanf和fprintf 13.3.1 字符读写函数 1.读字符函数fgetc 规格:int fgetc(FILE * stream); 功能:从指定的文件中读一个字符。 参数:stream为指向文件的指针...
while((count = fread(content, 1, sizeof(content), fp)) > 0) { //printf("%s", content); if (write(connfd, content, count) != count) { printf("write failed\n"); } } fclose(fp); close(connfd); ...
25 read/write、fread/fwrite、fopen/open有什么区别 96 26 快速启动??????????????? 100 27 启动时报ATA0a和硬盘启动相关问题 100 28 如何安装USB2.2新版本及编译USB驱动? 101 29 WindML、图形界面相关问题 102 ...
//Oneline为在线用户,可用于权限级别等限制!!! //第三部分:人员管理 void user_menu(struct user *show_user); void user_add(struct user *show_user); void user_find(struct user *show_user); void ...
3.4.3 open系统调用 84 3.4.4 访问权限的初始值 85 3.4.5 其他与文件管理有关的系统调用 88 3.5 标准i/o库 91 3.5.1 fopen函数 91 3.5.2 fread函数 92 3.5.3 fwrite函数 92 3.5.4 fclose函数 92 3.5.5 ...