最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C語言中的fopen()函數(shù)和fdopen()函數(shù)

 更新時(shí)間:2015年08月30日 12:04:40   投稿:goldensun  
這篇文章主要介紹了詳解C語言中的fopen()函數(shù)和fdopen()函數(shù),注意其之間指針功能相關(guān)的區(qū)別,需要的朋友可以參考下

C語言fopen()函數(shù):打開一個(gè)文件并返回文件指針
頭文件:

#include <stdio.h>

fopen()是一個(gè)常用的函數(shù),用來以指定的方式打開文件,其原型為:
 

  FILE * fopen(const char * path, const char * mode);

【參數(shù)】path為包含了路徑的文件名,mode為文件打開方式。

mode有以下幾種方式:

在POSIX 系統(tǒng),包含Linux 下都會(huì)忽略 b 字符。由fopen()所建立的新文件會(huì)具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)權(quán)限,此文件權(quán)限也會(huì)參考umask 值。

二進(jìn)制和文本模式的區(qū)別:
在windows系統(tǒng)中,文本模式下,文件以"\r\n"代表?yè)Q行。若以文本模式打開文件,并用fputs等函數(shù)寫入換行符"\n"時(shí),函數(shù)會(huì)自動(dòng)在"\n"前面加上"\r"。即實(shí)際寫入文件的是"\r\n" 。
在類Unix/Linux系統(tǒng)中文本模式下,文件以"\n"代表?yè)Q行。所以Linux系統(tǒng)中在文本模式和二進(jìn)制模式下并無區(qū)別。

更多信息請(qǐng)查看:C語言fopen()打開文本文件與二進(jìn)制文件的區(qū)別

有些C編譯系統(tǒng)可能不完全提供所有這些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,讀者注意所用系統(tǒng)的規(guī)定。

【返回值】文件順利打開后,指向該流的文件指針就會(huì)被返回。若果文件打開失敗則返回NULL,并把錯(cuò)誤代碼存在errno 中。

注意:一般而言,開文件后會(huì)作一些文件讀取或?qū)懭氲膭?dòng)作,若開文件失敗,接下來的讀寫動(dòng)作也無法順利進(jìn)行,所以在fopen()后請(qǐng)作錯(cuò)誤判斷及處理。

文件操作完成后,需要將文件關(guān)閉,一定要注意,否則會(huì)造成文件所占用內(nèi)存泄露和在下次訪問文件時(shí)出現(xiàn)問題。

文件關(guān)閉后,需要將文件指針指向空,這樣做會(huì)防止出現(xiàn)游離指針,而對(duì)整個(gè)工程造成不必要的麻煩,如fp = NULL。

【實(shí)例】打開一個(gè)文件然后關(guān)閉該文件。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
  FILE* fstream;
  char msg[100] = "Hello!I have read this file.";
  fstream=fopen("test.txt","at+");
  if(fstream==NULL)
  {
    printf("open file test.txt failed!\n");
    exit(1);
  }
  else
  {
    printf("open file test.txt succeed!\n");
  }
  fclose(fstream);
  return 0;
}

C語言fdopen()函數(shù):將文件描述詞轉(zhuǎn)為文件指針
頭文件:

 #include <stdio.h>

定義函數(shù):

FILE * fdopen(int fildes, const char * mode);

函數(shù)說明:fdopen()會(huì)將參數(shù)fildes 的文件描述詞, 轉(zhuǎn)換為對(duì)應(yīng)的文件指針后返回.

參數(shù)mode 字符串則代表著文件指針的流形態(tài), 此形態(tài)必須和原先文件描述詞讀寫模式相同. 關(guān)于mode 字符串格式請(qǐng)參考fopen().

返回值:轉(zhuǎn)換成功時(shí)返回指向該流的文件指針. 失敗則返回NULL, 并把錯(cuò)誤代碼存在errno 中.

范例

#include <stdio.h>
main()
{
  FILE * fp = fdopen(0, "w+");
  fprintf(fp, "%s\n", "hello!");
  fclose(fp);
}

執(zhí)行

hello!

相關(guān)文章

  • C/C++實(shí)現(xiàn)貪吃蛇逐步運(yùn)動(dòng)效果

    C/C++實(shí)現(xiàn)貪吃蛇逐步運(yùn)動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了C/C++實(shí)現(xiàn)貪吃蛇逐步運(yùn)動(dòng)效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • C/C++項(xiàng)目編譯工具簡(jiǎn)單介紹

    C/C++項(xiàng)目編譯工具簡(jiǎn)單介紹

    我們給大家?guī)砹艘黄P(guān)于C/C++項(xiàng)目編譯工具簡(jiǎn)單介紹的文章,大家在項(xiàng)目編譯前可以先閱讀下。
    2019-12-12
  • 淺析C++ new的三種面貌

    淺析C++ new的三種面貌

    這篇文章主要介紹了C++ new的三種面貌,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C語言簡(jiǎn)易版flappy bird小游戲

    C語言簡(jiǎn)易版flappy bird小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言簡(jiǎn)易版flappy bird小游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • C++簡(jiǎn)明分析臨時(shí)對(duì)象是什么

    C++簡(jiǎn)明分析臨時(shí)對(duì)象是什么

    對(duì)性能來說,許多的問題都需要和出現(xiàn)頻率及本身執(zhí)行一次的開銷掛鉤,有些問題雖然看似比較開銷較大,但是很少會(huì)執(zhí)行到,那也不會(huì)對(duì)程序有大的影響;同樣一個(gè)很小開銷的函數(shù)執(zhí)行很頻繁,同樣會(huì)對(duì)程序的執(zhí)行效率有很大影響。本章中作者主要根據(jù)臨時(shí)對(duì)象來闡述這樣一個(gè)觀點(diǎn)
    2022-04-04
  • 解析C/C++?Capstone?引擎源碼編譯問題

    解析C/C++?Capstone?引擎源碼編譯問題

    Capstone的編譯非常簡(jiǎn)單只需要一步即可輕松得到對(duì)應(yīng)的Lib庫(kù)文件,如下將介紹該引擎如何被編譯,以及簡(jiǎn)單的測(cè)試編譯,這篇文章主要介紹了C/C++?Capstone?引擎源碼編譯,需要的朋友可以參考下
    2022-09-09
  • 使用代碼驗(yàn)證linux子進(jìn)程與父進(jìn)程的關(guān)系

    使用代碼驗(yàn)證linux子進(jìn)程與父進(jìn)程的關(guān)系

    Linux下父進(jìn)程可以使用fork 函數(shù)創(chuàng)建子進(jìn)程,但是當(dāng)父進(jìn)程先退出后,子進(jìn)程會(huì)不會(huì)也退出呢?通過下面這個(gè)小實(shí)驗(yàn),我們能夠很好的看出來
    2014-02-02
  • c語言調(diào)用匯編的方法

    c語言調(diào)用匯編的方法

    在此記錄一下c調(diào)用匯編的方法,匯編使用的是AT&T語法。例子很簡(jiǎn)單,就是在給一個(gè)整數(shù)用匯編轉(zhuǎn)換成二進(jìn)制
    2013-11-11
  • C++?Cartographer源碼中關(guān)于傳感器的數(shù)據(jù)傳遞實(shí)現(xiàn)

    C++?Cartographer源碼中關(guān)于傳感器的數(shù)據(jù)傳遞實(shí)現(xiàn)

    這篇文章主要介紹了C++?Cartographer源碼中關(guān)于傳感器的數(shù)據(jù)傳遞實(shí)現(xiàn),前面已經(jīng)談到了Cartographer中添加軌跡的方法和傳感器的數(shù)據(jù)流動(dòng)走向。發(fā)現(xiàn)在此調(diào)用了LaunchSubscribers這個(gè)函數(shù)來訂閱相關(guān)傳感器數(shù)據(jù)
    2023-03-03
  • C語言中g(shù)etchar函數(shù)詳解看這一篇就夠了(函數(shù)功能、使用、返回值)

    C語言中g(shù)etchar函數(shù)詳解看這一篇就夠了(函數(shù)功能、使用、返回值)

    getchar讀取字符的函數(shù),今天通過本文給大家介紹C語言中g(shù)etchar函數(shù)簡(jiǎn)介用法示例詳解,感興趣的朋友跟隨小編一起看看吧
    2023-02-02

最新評(píng)論

康马县| 沙湾县| 天峻县| 类乌齐县| 彰武县| 金寨县| 锦州市| 普陀区| 兴城市| 藁城市| 弥渡县| 大理市| 韶山市| 图木舒克市| 湟中县| 布拖县| 潼南县| 三门峡市| 黑河市| 清镇市| 额尔古纳市| 额济纳旗| 灵台县| 北海市| 宁河县| 梁山县| 喀什市| 新巴尔虎左旗| 曲水县| 盘锦市| 泗阳县| 台安县| 曲阜市| 三原县| 望城县| 双峰县| 屏山县| 遂川县| 石屏县| 白城市| 许昌县|