`
gyht0808
  • 浏览: 115535 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

open和fopen的区别

阅读更多

open和fopen的区别:
主要区别是涉及到系统,而不是缓冲。带f的是标准IO,代码可以移植。不带f只能在UNIX/LINUX系统调用。  open一个是整数,fopen一个是指针(FILE *)。  二者区别大致可以总结为以下几点:
1,fread是带缓冲的,read不带缓冲.  
2,fopen是标准c里定义的,open是POSIX中定义的.  
3,fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别.  
4,fopen不能指定要创建文件的权限.open可以指定权限.  
5,fopen返回指针,open返回文件描述符(整数).  
6,linux/unix中任何设备都是文件,都可以用open,read.
1.非缓冲文件系统
缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据。非缓冲 文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度快,由于 ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。
open, close, read, write, getc, getchar, putc, putchar 等
2.缓冲文件系统
缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从 内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等

前者属于低级IO,后者是高级IO。
前者返回一个文件描述符(用户程序区的),后者返回一个文件指针。
前者无缓冲,后者有缓冲。
前者与 read, write 等配合使用, 后者与 fread, fwrite等配合使用。
后者是在前者的基础上扩充而来的,在大多数情况下,用后者。
http://blog.chinaunix.net/u/21067/showart_213410.html
open 是Linux/Unix系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的库函数,返回的是一个指向文件结构的指针。

fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api
linux中的系统函数是open,fopen是其封装函数。
fopen最终还是要调用底层的系统调用open。

分享到:
评论

相关推荐

    linux_file_op.zip_file操作_linux fopen_open

    本篇文章将深入探讨Linux系统下的文件操作,主要关注`fopen`和`open`两个函数,它们在C语言编程中被广泛用于打开和处理文件。 首先,让我们了解`fopen`函数。`fopen`是C标准库中的函数,它提供了一种用户友好的方式...

    linux中open函数使用

    open 和 fopen 函数的区别在于:open 函数属于低级 IO,返回一个文件描述符,而 fopen 函数属于高级 IO,返回一个文件指针。open 函数无缓冲,而 fopen 函数有缓冲。open 函数与 read, write 等函数配合使用,而 ...

    解决C++ fopen按行读取文件及所读取的数据问题

    "0.can't open " << dataList << endl; return -1; } 2、按行读取数据: 方法一: char loadImgPath[1000]; while(EOF != fscanf(fpListFile, "%s", loadImgPath)) { ... } 其中,loadImgPath不能...

    PHP fopen()和 file_get_contents()应用与差异介绍

    在PHP中,`fopen()` 和 `file_get_contents()` 都是用来处理文件操作的函数,但它们在使用方式和功能上有显著的区别。首先,我们来详细了解这两个函数。 1. **fopen()** `fopen()` 是一个非常灵活的文件处理函数,...

    file_cp.rar_linux fopen

    在Linux系统中,`fopen`是一个非常重要的C语言库函数,它被广泛用于打开、读取、写入和处理文件。在这个名为“file_cp.rar_linux fopen”的项目中,我们看到一个应用程序,它利用`fopen`来实现文件的复制功能。这个...

    Open-any-type-of-file-directory.rar_Open File_open

    在不同的编程语言中,如Python的`open()`函数,C++的`fopen()`函数,或者是LabVIEW(Visual Studio .VI可能对应的语言)中的相应节点或模块。 "open"标签可能意味着这个压缩包中的程序具有文件操作的核心功能,即...

    详解C语言中的fopen()函数和fdopen()函数

    例如,在Windows系统中,文本模式会将`\n`转换为`\r\n`,而在类Unix/Linux系统中,文本模式和二进制模式无明显区别。 **返回值**:成功打开文件后,`fopen()` 返回一个指向该文件的`FILE`类型指针。如果打开失败,...

    C语言文件操作 fopen, fclose, mkdir详解

    本文主要讲解了三个关键的文件操作函数:`fopen`、`fclose`和`mkdir`,它们分别用于文件的打开、关闭以及创建目录。 1. **创建目录**: - 函数`_mkdir`用于创建一个新的目录。其函数原型为`int _mkdir(const char ...

    sina weibo open api

    新浪微博Open API,注:需要授权的开发者才能访问,其API调用格式类似Twitter,但需要一个API Key用于认证管理。

    php 使用fopen函数创建、打开文件详解及实例代码

    首先,来看一下fopen()函数的基本语法和用法: fopen(string filename, string mode); 其中,filename参数是指定要打开或创建的文件名或URL。如果指定的是一个URL,并且符合'scheme://'的格式,PHP会将其视为网络...

    PHP fopen中文文件名乱码问题解决方案

    $fp = fopen($fileName, 'w'); fwrite($fp, '这是中文内容'); fclose($fp); echo $fileName.' '; if(file_exists($fileName)){ echo 'hhhhh'; } ?> 结果: 文件名是乱码 解决: 对文件名进行编码...

    PHP使用fopen与file_get_contents读取文件实例分享

    php中读取文件可以使用fopen和file_get_contents这两个函数,二者之间没有本质区别,只是前者读取文件的php代码相比后者要复杂一点。本文章通过实例向大家讲解fopen和file_get_contents读取文件的实现代码。需要的...

    vm.zip_open

    在OpenBSD中,对文件的操作通常是通过标准的C库函数进行的,例如`fopen()`、`fread()`等,但特定的文件格式如ZIP可能需要专门的库函数支持。`zip_open`可能是一个封装了这些功能的函数,它能解析ZIP头信息,初始化解...

    php中file_get_content 和curl以及fopen 效率分析

    curl多用于互联网网页之间的抓取,fopen多用于读取文件,而file_get_contents多用于获取静态页面的内容。 1. fopen /file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。但是CURL会自动对DNS信息...

    php打开文件fopen函数的使用说明

    - 安全模式和 `open_basedir` 配置会影响文件的可访问性,如果设置了这些限制,`fopen()` 只能访问允许的路径。 - `allow_url_fopen` 配置需要开启,才能使用 `fopen()` 打开远程 URL。 - 在跨操作系统之间编写代码...

    PHP fopen函数用法实例讲解

    fopen(filename,mode,include_path,context) 参数: filename 必需。规定要打开的文件或 URL。 mode 必需。规定要求到该文件/流的访问类型。 include_path 可选。如果也需要在 include_path 中检索文件的话...

    探索C语言中的高级文件流操作:`fmemopen`、`open-memstream`、`fdopendir`

    除了常见的fopen、fclose、fread和fwrite外,还有一些高级函数可以创建特殊的文件流,如fmemopen、open_memstream和fdopendir。这些函数允许开发者在内存中操作数据,或以文件流的方式处理目录。本文将详细介绍这些...

    llog_test.rar_open

    在C语言中,这通常涉及使用标准I/O函数如 `fopen()` 来创建和打开文件。 打开(open)日志文件是指在运行时重新连接到已存在的日志文件。这通常需要处理文件权限、错误检查,以及确保多个进程可以安全地写入同一日...

    msnd_midi.rar_open

    在IT行业中,尤其是在操作系统和音频处理领域,"msnd_midi.rar_open"这个标题和描述涉及到的是关于MIDI(Musical Instrument Digital Interface)文件的处理,以及如何在程序中进行输入输出操作。"open"标签可能指的...

Global site tag (gtag.js) - Google Analytics