程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 詳解C說話中的fopen()函數和fdopen()函數

詳解C說話中的fopen()函數和fdopen()函數

編輯:關於C++

詳解C說話中的fopen()函數和fdopen()函數。本站提示廣大學習愛好者:(詳解C說話中的fopen()函數和fdopen()函數)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C說話中的fopen()函數和fdopen()函數正文


C說話fopen()函數:翻開一個文件並前往文件指針
頭文件:

#include <stdio.h>

fopen()是一個經常使用的函數,用來以指定的方法翻開文件,其原型為:
 

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

【參數】path為包括了途徑的文件名,mode為文件翻開方法。

mode有以下幾種方法:

在POSIX 體系,包括Linux 下都邑疏忽 b 字符。由fopen()所樹立的新文件會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)權限,此文件權限也會參考umask 值。

二進制和文本形式的差別:
在windows體系中,文本形式下,文件以"\r\n"代表換行。若以文本形式翻開文件,並用fputs等函數寫入換行符"\n"時,函數會主動在"\n"後面加上"\r"。即現實寫入文件的是"\r\n" 。
在類Unix/Linux體系中文本形式下,文件以"\n"代表換行。所以Linux體系中在文本形式和二進制形式下並沒有差別。

更多信息請檢查:C說話fopen()翻開文本文件與二進制文件的差別

有些C編譯體系能夠不完整供給一切這些功效,有的C版本不消"r+","w+","a+",而用"rw","wr","ar"等,讀者留意所用體系的劃定。

【前往值】文件順遂翻開後,指向該流的文件指針就會被前往。若果文件翻開掉敗則前往NULL,並把毛病代碼存在errno 中。

留意:普通而言,開文件後會作一些文件讀取或寫入的舉措,若開文件掉敗,接上去的讀寫舉措也沒法順遂停止,所以在fopen()後請作毛病斷定及處置。

文件操作完成後,須要將文件封閉,必定要留意,不然會形成文件所占用內存洩漏和鄙人次拜訪文件時湧現成績。

文件封閉後,須要將文件指針指向空,如許做會避免湧現游離指針,而對全部工程形成不用要的費事,如fp = NULL。

【實例】翻開一個文件然後封閉該文件。

#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()函數:將文件描寫詞轉為文件指針
頭文件:

 #include <stdio.h>

界說函數:

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

函數解釋:fdopen()會將參數fildes 的文件描寫詞, 轉換為對應的文件指針後前往.

參數mode 字符串則代表著文件指針的流形狀, 此形狀必需和本來文件描寫詞讀寫形式雷同. 關於mode 字符串格局請參考fopen().

前往值:轉換勝利時前往指向該流的文件指針. 掉敗則前往NULL, 並把毛病代碼存在errno 中.

典范

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

履行

hello!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved