日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

open函数和fopen函数区别

發(fā)布時(shí)間:2024/3/26 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 open函数和fopen函数区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

fopen是基于ANSIC標(biāo)準(zhǔn)C的的API

open是UNIX系統(tǒng)的API的區(qū)別

這里重點(diǎn)運(yùn)用fopen等ANSIC標(biāo)準(zhǔn)C的的API,open等UNIX系統(tǒng)的API可參考主頁(yè)文章

1.層次不同
open是系統(tǒng)調(diào)用,返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,
fopen是ANSIC標(biāo)準(zhǔn)中的C語(yǔ)言庫(kù)函數(shù),返回的是一個(gè)指向文件結(jié)構(gòu)的指針)。在不同的系統(tǒng)中應(yīng)該調(diào)用不同的內(nèi)核api。linux中的系統(tǒng)函數(shù)是open,fopen是其封裝函數(shù),fopen的實(shí)現(xiàn)要調(diào)用open。標(biāo)準(zhǔn)C庫(kù).
2.fopen和open最主要的區(qū)別是是否有緩存
fopen用戶態(tài)下就有了緩存,它使用了FILE這個(gè)結(jié)構(gòu)保存緩沖數(shù)據(jù)。在進(jìn)行read和write的時(shí)候減少了用戶態(tài)和內(nèi)核態(tài)的切換。
open沒(méi)有緩存,每次讀操作都直接從文件系統(tǒng)中獲取數(shù)據(jù)。在進(jìn)行read和write的時(shí)候每次都需要進(jìn)行內(nèi)核態(tài)和用戶態(tài)的切換。
表現(xiàn)為,如果順序訪問(wèn)文件,fopen系列的函數(shù)要比直接調(diào)用open系列快;如果隨機(jī)訪問(wèn)文件open要比f(wàn)open快。
3.一般用fopen打開普通文件,用open打開設(shè)備文件。

fopen函數(shù)原型和頭文件

?

#include <stdio.h>FILE *fopen(const char *path, const char *mode);

返回值:fopen函數(shù)返回新打開文件的文件指針;如果此文件不能打開,則返回NULL指針。

參數(shù):path: 要打開的文件路徑
? ? ? ? ? ?mode: 訪問(wèn)文件的模式, 它包括:

?

代碼實(shí)現(xiàn)

#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; }

總結(jié)

以上是生活随笔為你收集整理的open函数和fopen函数区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。