當前位置:首頁 » 編程語言 » c語言中fopen函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中fopen函數

發布時間: 2022-01-17 03:09:03

A. 關於c語言中的fopen()函數

可以直接用p,例如:

fp=fopen(p,"w");

B. C語言Fopen函數的用法

fopen函數用來打開一個文件,其調用的一般形式為:
文件指針名=fopen(文件名,使用文件方式);
其中,
「文件指針名」必須是被說明為FILE 類型的指針變數;
「文件名」是被打開文件的文件名;
「使用文件方式」是指文件的類型和操作要求。
「文件名」是字元串常量或字元串數組。
例如:
FILE *fp;
fp=("file a","r");
其意義是在當前目錄下打開文件file a,只允許進行「讀」操作,並使fp指向該文件。
又如:
FILE *fphzk
fphzk=("c:\\hzk16","rb")
其意義是打開C驅動器磁碟的根目錄下的文件hzk16,這是一個二進制文件,只允許按二進制方式進行讀操作。兩個反斜線「\\ 」中的第一個表示轉義字元,第二個表示根目錄。
使用文件的方式共有12種,下面給出了它們的符號和意義。
文件使用方式
意義
「rt」
只讀打開一個文本文件,只允許讀數據
「wt」
只寫打開或建立一個文本文件,只允許寫數據
「at」
追加打開一個文本文件,並在文件末尾寫數據
「rb」
只讀打開一個二進制文件,只允許讀數據
「wb」
只寫打開或建立一個二進制文件,只允許寫數據
「ab」
追加打開一個二進制文件,並在文件末尾寫數據
「rt+」
讀寫打開一個文本文件,允許讀和寫
「wt+」
讀寫打開或建立一個文本文件,允許讀寫
「at+」
讀寫打開一個文本文件,允許讀,或在文件末追加數據
「rb+」
讀寫打開一個二進制文件,允許讀和寫
「wb+」
讀寫打開或建立一個二進制文件,允許讀和寫
「ab+」
讀寫打開一個二進制文件,允許讀,或在文件末追加數據
對於文件使用方式有以下幾點說明:
1) 文件使用方式由r,w,a,t,b,+六個字元拼成,各字元的含義是:
r(read): 讀
w(write): 寫
a(append): 追加
t(text): 文本文件,可省略不寫
b(banary): 二進制文件
+: 讀和寫
2) 凡用「r」打開一個文件時,該文件必須已經存在,且只能從該文件讀出。
3) 用「w」打開的文件只能向該文件寫入。若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經存在,則將該文件刪去,重建一個新文件。
4) 若要向一個已存在的文件追加新的信息,只能用「a」方式打開文件。但此時該文件必須是存在的,否則將會出錯。
5) 在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,並作相應的處理。因此常用以下程序段打開文件:
6) if((fp=fopen("c:\\hzk16","rb")==NULL)
{
printf("\nerror on open c:\\hzk16 file!");
getch();
exit(1);
}
這段程序的意義是,如果返回的指針為空,表示不能打開C盤根目錄下的hzk16文件,則給出提示信息「error on open c:\ hzk16 file!」,下一行getch()的功能是從鍵盤輸入一個字元,但不在屏幕上顯示。在這里,該行的作用是等待,只有當用戶從鍵盤敲任一鍵時,程序才繼續執行,因此用戶可利用這個等待時間閱讀出錯提示。敲鍵後執行exit(1)退出程序。
7) 把一個文本文件讀入內存時,要將ASCII碼轉換成二進制碼,而把文件以文本方式寫入磁碟時,也要把二進制碼轉換成ASCII碼,因此文本文件的讀寫要花費較多的轉換時間。對二進制文件的讀寫不存在這種轉換。
8) 標准輸入文件(鍵盤),標准輸出文件(顯示器),標准出錯輸出(出錯信息)是由系統打開的,可直接使用。

C. c語言fopen怎麼用

fopen一般與buf搭配使用,通過與fgets函數配合使用,將文件中的字元串讀到buf中,這樣達到讀出文件內容的目的代碼如下:

FILE tf=NULL;//定義一個文件指著,用於判斷fopen是否打開成功,並初始化為空;

char buf[1024]={0};//定義一個長度為1024的數組,用於存放文件的內容;

tf=fopen("c:example.txt","r");//打開c盤指定文件,並以只讀的形式打開,避免破壞原文件,將fopen的返回值放在指針tf中,若打開成功,則返回成功的指針,打開不成功則返回空;

if(tf != NULL)//判斷是否成功,不等於NULL則表示成功;

{

if(fgets(buf,1024,tf) != NULL)//將指向c盤文件的指針的內容賦給buf,長度為1024,並判斷是否獲取成功;

{

printf("buf=%s ",buf);//將成功獲取的字元串顯示在屏幕上;

}

}

fclose(tf);//將已打開的文件關閉;

(3)c語言中fopen函數擴展閱讀:

fopen的工作原理

FILE *fp;

fp=fopen("filename.txt","w");

首先檢測filename.txt是否存在,如果不存在則在磁碟 創建該文件,然後在內存開辟區域(應該是緩沖區)准備寫該文件

調用fclose時,將內存中的內容寫入到磁碟中去

測試(filename.txt不存在):

#include <stdio.h>

#include <stdlib.h>

int main()

{

FILE *fp1,*fp2;

fp1=fopen("filename.txt","w");

if(fp1==NULL)

{

printf("fp1 open failed!/n");

}

else

{

printf("fp1 open success!/n");

}

fp2=fopen("filename.txt","r");

if(fp2==NULL)

{

printf("fp2 open failed!/n");

}

else

{

printf("fp2 open success!/n");

}

fclose(fp1);

fclose(fp2);

return 0;

}

輸出:

fp1 open success!

fp2 open success!

說明文件操作不是互斥的,而且以寫方式打開文件,如果文件不存在,先在磁碟創建該文件

加入寫入語句:

#include <stdio.h>

#include <stdlib.h>

int main()

{

FILE *fp1,*fp2;

fp1=fopen("filename.txt","w");

if(fp1==NULL)

{

printf("fp1 open failed!/n");

}

else

{

printf("fp1 open success!/n");

fputs("abcdef",fp1);

}

fp2=fopen("filename.txt","w");

if(fp2==NULL)

{

printf("fp2 open failed!/n");

}

else

{

printf("fp2 open success!/n");

fputs("ABC/n",fp2);

}

fclose(fp1);

fclose(fp2);

return 0;

}

打開filename.txt文件:

ABC

f

說明後關閉的,刷新了磁碟數據

參考資料來源:fopen-網路

D. C語言fopen函數中文件打開方式(參數值)

C語言fopen函數用於打開文件。
函數原型:FILE * fopen(const char * path,const char * mode);
參數:
path 字元串類型,表示文件所在的路徑,包括文件名
mode 打開文件的模式、
返回值:文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在errno 中。
mode:
r 以只讀方式打開文件,該文件必須存在。
r+ 以可讀寫方式打開文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,允許讀寫數據,文件必須存在。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)
wb 只寫打開或新建一個二進制文件;只允許寫數據。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。
實例:
#include<stdio.h>

#define F_PATH "d:\\myfile\\file.dat"
int main(void)
{
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp)
{
return -1;//要返回錯誤代碼
}
fclose(fp);
fp=NULL;//需要指向空,否則會指向原打開文件地址

return 0;
}

E. C語言中的fopen函數的具體實現是怎麼樣

fopen(a,b),意思是打開一個文件名字為a的文件

F. c語言fopen函數問題

fopen
函數
返回的是一個FILE
類型

指針
,如果是打開文件,文件不存在的話
返回值
為空,如果存在就返回指向該文件的指針,如果是新建一個文件,返回值就是新建文件的指針,可以利用該指針實現對文件的讀寫功能。
至於判斷是讀還是寫,是跟fopen第二個
參數
決定的,也就是由你自己決定。
代碼舉例:
FILE
*fp;
fp=fopen("D:\\1.txt","r");
"r"代表是讀如果D盤下確實有這個文件,fp就是指向該文件的一個指針,如果不存在,就是空。
fp=fopen("D:\\1.tx","w");
"w"表示寫,返回值是指向新建文件的指針。

G. c語言有關fopen()函數

LZ還是看看基本C語言知識數組部分先吧(如果樓主沒學過c語言就直接c++,強烈建議先自學c語言)
首先,對於數組,比如int a[2];
a既是數組名,也是數組第一個存儲單元a[0]的指針
也就是說,int *p=a;p指向的就是a[0]。
其次,函數形參為數組時,無論下標多大(或者說容量多大),都只是表明該函數參數為指針,即void write_char(char filenam[40])參數filename既可以是char *也可以是char a[n](n為任意值)。當然,這只是語法問題,實際用時還要具體分析,這里不多講,你自己解決吧。
現在來看你的問題,1.「調用write_char()函數時,實參是數組的地址,而形參則是數組。為什麼這樣也能進行調用?」原因見上。
2.「fp=fopen(filenam,"a")為什麼直接使用filenam,好像filenam代表的是數組的首地址。」當數組是字元數組時,數組名為第一個字元指針,同時也是數組字元串的指針(char *p="abc.txt"等價於char a[50]="abc.txt",char *p=a)詳細情況你可以看看字元數組方面的知識。

H. C語言fopen函數和其參數

fopen()是一個文件I/O 裡面的函數 功能是打開一個文件。
其原型是 FILE *fopen(char *filename,char *mode)
返回值 :正常打開 返回指向文件結構體的指針。
失敗,返回NULL;

要用這個函數是首先要定義一個 文件指針,例
FILE *fp=NULL;
fp=fopen(「./txt」,"r"); 就是以只讀的方式打開當前目錄txt這個文件
第一個參數是要打開的文件名
第二個參數是:打開模式 r 只讀 , r+ 讀寫, w只寫 ,w+讀寫, a追加, a+

I. C語言fopen函數

把「program files」換成「progra~1」試試看。

J. 關於L下C語言里fopen函數的使用

const
char
*mode不是文件名,文件名包含在*path裡面.
*mode是文件打開方式,r是只讀的意思