open函数和fopen函数区别
fopen是基于ANSIC标准C的的API
open是UNIX系统的API的区别
这里重点运用fopen等ANSIC标准C的的API,open等UNIX系统的API可参考主页文章
1.层次不同
open是系统调用,返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,
fopen是ANSIC标准中的C语言库函数,返回的是一个指向文件结构的指针)。在不同的系统中应该调用不同的内核api。linux中的系统函数是open,fopen是其封装函数,fopen的实现要调用open。标准C库.
2.fopen和open最主要的区别是是否有缓存
fopen用户态下就有了缓存,它使用了FILE这个结构保存缓冲数据。在进行read和write的时候减少了用户态和内核态的切换。
open没有缓存,每次读操作都直接从文件系统中获取数据。在进行read和write的时候每次都需要进行内核态和用户态的切换。
表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快。
3.一般用fopen打开普通文件,用open打开设备文件。
fopen函数原型和头文件
#include <stdio.h>FILE *fopen(const char *path, const char *mode);
返回值:fopen函数返回新打开文件的文件指针;如果此文件不能打开,则返回NULL指针。
参数:path: 要打开的文件路径
mode: 访问文件的模式, 它包括:
代码实现
#include <stdio.h>#include <string.h>int main()
{//FILE *fopen(const char *path, const char *mode);FILE *fp;char *str="zhengyanfeng handsome";char readBuf[128]={0};fp=fopen("./zheng.txt","w+");//size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);//ptr buf//size sizeof char//geshu//which filefwrite(str,sizeof(char),strlen(str),fp);fseek(fp,0,SEEK_SET);// fwrite(str,sizeof(char)*strlen(str),1,fp);//size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);fread(readBuf,sizeof(char)*strlen(str),1,fp);printf("read data:%s\n",readBuf);return 0;
}
open函数和fopen函数区别相关推荐
- php fopen函数php,fopen函数介绍与使用方法详解
在我们的PHP开发中会经常遇到fopen()和file_get_contents(),相信很多同学都发现这两个函数基本上都差不多,那么我们今天就来讲讲php fopen()和file_get_cont ...
- 【C/C++】freopen 函数和 fopen 函数|标准输入输入写入文件|屏幕输出写入文件
目录 相同和不同点 例子 fopen freopen 相同和不同点 freopen 和 fopen 都是C的标准库函数被包含于C标准库头文件<stdio.h>中. fopen就是我们最熟悉 ...
- C语言文件 open函数和fopen函数
open 头文件: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 定义函数: in ...
- freopen 函数和 fopen 函数简单介绍
偶然碰到了freopen这个函数,起初以为和fopen什么的一样,但是发现close后不能好好输出了.先说说fopen()吧. 1. fopen() 在C语言中遇到使用文件输入/输出的,最常见 ...
- 函数:fopen的使用方法
函数:fopen 函数原型:FILE * fopen(const char * path,const char * mode); 返回值:文件顺利打开后,指向该流的文件指针就会被返回.如果文件打开失败 ...
- python的fopen函数_打开文件fopen函数的用法
在C语言中,对文件操作之前,首先需要打开文件,使用的函数是fopen函数,它的作用是打开文件,获取该文件的文件指针,方便后续操作.函数原型为:FILE *fopen(const char *filen ...
- 九、Linux文件 - fopen函数和fclose函数讲解
目录 1.fopen函数 2.fclose函数 3.fopen函数和fclose实战 1.fopen函数 fopen fwrite fread fclose ...属于标准C库 include < ...
- php fopen函数
php中没有单独的文件创建函数,如果我们想创建函数,可以使用fopen(),fopen()函数字面意思是打开文件,但该函数也有创建文件的功能,当使用 fopen() 函数打开一个文件时,如果文件不存在 ...
- fread、fwrite、fopen函数的简单使用和open、read、write区别解析
这几个函数的区别:fread.fwrite.fopen和open.read.write区别解析 标准C库函数的简单使用 fopen函数原型: #include <stdio.h> FILE ...
最新文章
- leetcode算法题--二叉树中的最长交错路径★
- 常考数据结构与算法:最长公共子串
- 用Scikit-learn和TensorFlow进行机器学习(二)
- opengl加载显示3D模型obj类型文件
- android 画布抗锯齿,android – 如何在画布和路径中进行抗锯齿处理
- linux查看mariadb安装卸载,MySQL——在Linux下安装和卸载MariaDB
- 一种网页倒计时的实现
- 总结:如何使用ClearCase进行开发工作
- PHP 千图成像,千图成像,教你制作由无数图片组成的人像效果
- 软件测试自学毛笔字纹身,254439
- 关于Diy51单片机的趣事
- Sam Altman专访:GPT-4没太让我惊讶,ChatGPT则让我喜出望外
- 基本的SELECT语句的练习(MySQL)(SQLyog)
- html语言需要dw吗,DW(HTML-基础知识点1)
- 厂区佩戴安全帽检测算法 yolov5
- 《AutoCAD 2014中文版实用教程》一一1.2 标题栏
- 大公司github地址
- LT1381CS#TRPBF RS232双驱动器/接收器 低功耗5V
- 教大家如何区分屏蔽数据线的好坏
- SwiftUI Macaw 如何修复Expression was too complex to be solved in reasonable time
热门文章
- javaweb上传文件
- win10计算器_新一代Win10记事本详细体验,30年后首更新
- 东华oj1-求长方形的面积和周长C++
- 求一个长方形的面积S及周长P。面积的公式为S = a × b,周长的公式P=2*(a+b),其中a代表长方形的长,b代表长方形的宽。
- C#调用SAPI实现语音合成的两种方法
- FLUKA版本更新过程
- WIN10 qCOW2 下载
- php工程师会掉头发吗,它是掉头发的“凶手”,吃的越多头发掉的越厉害!千万要注意...
- 酷卡机器人c2编程手册_KUKA C2操作与基础编程(中文版).pdf
- 臭名昭著的黑客攻击事件 20件