- 浏览: 460412 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 820- (BOOL)floatA:(float)f1 equalB ... -
C++序列化
2012-07-12 09:51 595http://hi.baidu.com/ewook/item/ ... -
C++著名内裤
2011-12-02 14:00 8121、C++各大有名库的介绍 ... -
C++写C
2011-09-06 17:23 654在C++中写C,标准头文件写法 #ifndef __AB ... -
errno.h
2011-05-05 14:27 696#define EPERM 1 ... -
__cplusplus
2011-04-21 15:09 739http://www.cnblogs.com/stonecra ... -
Pthread__常用
2011-04-21 11:46 852http://blogold.chinaunix.net/u/ ... -
常用预编译
2011-04-21 10:32 656#if defined(WIN32) || defined ... -
C++__容器
2011-04-18 10:16 558http://apps.hi.baidu.com/share/ ... -
C++模板
2011-03-29 14:27 625内容主要来至《钱能C++程序设计教程》&《C++ Pr ... -
交叉引用、前置声明
2011-03-02 09:40 804有两个类相互引用了,编译器报错。 原因是两个类交叉引用: A ... -
typedef的四个用途和两个陷阱
2010-12-14 12:34 656http://hi.baidu.com/changfeng01 ... -
第五届开源小组招新题目
2010-12-03 21:56 750这是学校的开源小组招新题。 08年时我是第二届的组长,不知不觉 ... -
string const char*
2010-12-02 16:13 777http://topic.csdn.net/u/2008092 ... -
CPP Container
2010-11-10 09:20 730延后整理。。。 -
C语言运算符优先级
2010-11-02 17:45 789优先级 运算符 ... -
point point
2010-11-02 17:23 623http://learn.akae.cn/media/ch23 ... -
位运算
2010-11-01 11:33 782千百年来,位运算始终没出现在我写的代码里,今天终于出现了。 ... -
Unix环境下操作特大文件
2010-11-01 11:03 617http://hi.baidu.com/jiangfeng11 ... -
GCC在C语言中内嵌汇编
2010-10-22 14:48 1368http://hi.baidu.com/liu_bin0101 ...
相关推荐
通过分析这个压缩包中的文件,我们可以学习到如何在C语言中使用`read`和`fread`来读取文件,以及如何配合`open`、`fopen`、`fclose`和`close`进行文件的管理和操作。这些基础知识对于任何C程序员来说都是必备的,...
C++ fread 函数详解 fread 函数是 C++ 语言中...在实际应用中,fread 函数可以用于读取各种类型的文件和流数据,并且可以与其他函数结合使用,例如 fwrite 函数、fseek 函数等,来实现更加复杂的文件操作和数据处理。
open 函数与 read, write 等函数配合使用,而 fopen 函数与 fread, fwrite 等函数配合使用。在大多数情况下,使用 fopen 函数。 open 函数是 Linux 中一个基本的文件操作函数,用于打开或创建文件,并返回一个文件...
int read(char *file); /*------------初始化-----------------------*/ int format() { current = 2; currentPath="C:\\\\"; //当前路径 osPoint->format();//打开文件列表初始化 delete openlist; openlist=...
while ((bytes_read = fread(buffer, 1, sizeof(buffer), source_file)) > 0) { if (fwrite(buffer, 1, bytes_read, dest_file) != bytes_read) { perror("Error writing to destination file"); fclose(source_...
卷曲fopen、fread、fwrite 等所有函数在许多 C 程序中都很常见并且是标准的“习惯用法”。 通过提供具有与基于文件的版本相同的一般行为的 fcurl* 函数,但允许 URL 以其他方式使用文件名,这是一种尝试,允许现有的...
这些函数都是基于系统调用的,例如 `fopen` 函数调用 `open` 系统调用来打开文件,`fread` 函数调用 `read` 系统调用来读取文件。 Unbuffered I/O 函数 Unbuffered I/O 函数是一组系统调用函数,提供了基本的输入/...
- 在实际开发中,应该检查`fopen`、`fread`和`fwrite`等函数的返回值,以确定是否成功执行,失败时应处理异常。 - 使用`ferror`或`feof`检查错误状态,例如在读写过程中是否遇到文件结束或错误。 - 避免内存泄漏...
1. **使用标准C的I/O库函数**:包括`fopen`、`fread`和`fwrite`等函数。 2. **使用Unix的I/O函数**:包括`open`、`read`和`write`等函数。 3. **使用`open`和`mmap`**:即通过内存映射的方式来进行文件操作。 每种...
Linux文件I/O提供了一些库函数,例如open、read、write等。 5.Linux输出机制 Linux输出是带缓冲区机制的,输出的信息先写入缓冲区,然后再输出到终端。缓冲区满时,统一输出到终端。行缓冲输出只要有\n, 就输出...
系统调用I/O函数:深入学习open、close、read、write等基本I/O函数,理解文件描述符的概念及其在系统调用中的关键作用。 系统调用与内核:探索系统调用的内部机制,包括软件中断、系统调用号的使用,以及如何在用户...
- 系统调用是应用程序与操作系统交互的接口,如open、close、read、write等。 - syscalls.h头文件包含了所有系统调用的声明。 以上只是Linux环境下C程序设计的一些基本概念和核心知识点,实际编程中还需要结合...
在C语言中,文件操作主要依赖于标准库`stdio.h`中定义的各种函数,包括文件的打开、读取、写入及关闭等。 1. **打开文件** - 函数:`FILE *fopen(const char *path, const char *mode);` - 参数解释:`path`是...
首先,我们来看看C语言中的标准文件操作函数,包括fopen、fclose、fread和fwrite,这些函数是跨平台的,适用于处理普通文件。fopen用于打开文件,fclose用于关闭文件,fread和fwrite则分别用于读写文件内容。当需要...
- 在执行效率上,通常`fread()`和`fwrite()`比`read()`和`write()`稍微快一些,因为它们使用了缓冲机制。 - `fread()`和`fwrite()`支持更丰富的错误检查机制,因此在实际开发中更为常用。 - 使用`time`命令可以比较...
例如,`open`, `read`, `write`, `close`等函数就是常用的文件操作系统调用。 - **用户编程接口(API)**:通常指的是库函数,这些函数封装了系统调用,为开发者提供了更高级别的抽象,使得编程更加简单。例如,`...
- `stdio.h`:包含了输入/输出操作,如`printf`、`scanf`、`fopen`、`fclose`等,它们是进行文件操作和屏幕打印的基础。 - `stdlib.h`:提供了内存管理(`malloc`、`calloc`、`realloc`、`free`)、数值转换(`...