c語(yǔ)言標(biāo)準(zhǔn)庫(kù)中用于打開(kāi)文件的函數(shù)是fopen()。
云龍網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)2013年至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
函數(shù)原型:FILE
*
fopen(const
char
*
path,const
char
*
mode);
參數(shù)說(shuō)明:path指明要打開(kāi)的文件名,mode指明以什么方式打開(kāi)。詳細(xì)在下面介紹。
返回值:文件順利打開(kāi)后,指向該流的文件指針就會(huì)被返回。如果文件打開(kāi)失敗則返回NULL,并把錯(cuò)誤代碼存在errno
中。示例如下
#includestdio.h
//根據(jù)需要修改成自己要打開(kāi)的文件即可。
#define F_PATH "d:\\myfile\\file.dat"
int main(void)
{
FILE *fp=NULL;//需要注意
fp=fopen(F_PATH,"r"); //以只讀方式打開(kāi)一個(gè)文件
if(NULL==fp)
{
return -1;//要返回錯(cuò)誤代碼
}
fclose(fp); //打開(kāi)一個(gè)文件停止操作后,要關(guān)閉打開(kāi)的文件
fp=NULL;//需要指向空,否則會(huì)指向原打開(kāi)文件地址
return 0;
}
參數(shù)mode的類型:
r
以只讀方式打開(kāi)文件,該文件必須存在。
r+
以可讀寫方式打開(kāi)文件,該文件必須存在。
rb+
讀寫打開(kāi)一個(gè)二進(jìn)制文件,允許讀寫數(shù)據(jù),文件必須存在。
w
打開(kāi)只寫文件,若文件存在則文件長(zhǎng)度清為0,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
w+
打開(kāi)可讀寫文件,若文件存在則文件長(zhǎng)度清為零,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
a
以附加的方式打開(kāi)只寫文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫入的數(shù)據(jù)會(huì)被加到文件尾,即文件原先的內(nèi)容會(huì)被保留。(EOF符保留)
a+
以附加方式打開(kāi)可讀寫的文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫入的數(shù)據(jù)會(huì)被加到文件尾后,即文件原先的內(nèi)容會(huì)被保留。
(原來(lái)的EOF符不保留)
wb
只寫打開(kāi)或新建一個(gè)二進(jìn)制文件;只允許寫數(shù)據(jù)。
wb+
讀寫打開(kāi)或建立一個(gè)二進(jìn)制文件,允許讀和寫。
ab+
讀寫打開(kāi)一個(gè)二進(jìn)制文件,允許讀或在文件末追加數(shù)據(jù)。
/*頭文件,包含的函數(shù)庫(kù), stdio.h是C語(yǔ)言的輸入輸出庫(kù),里面有最常見(jiàn)的函數(shù),你需要某個(gè)函數(shù)時(shí)可以man一下,上面有函數(shù)功能介紹和函數(shù)使用方法、即需要引用的頭文件。*/
#include stdio.h
/*函數(shù)入口,C語(yǔ)言程序執(zhí)行程序是從main函數(shù)開(kāi)始執(zhí)行的*/
main ()
{
/*定義一個(gè)文件標(biāo)識(shí)號(hào)指針,后面用fopen函數(shù)打開(kāi)某個(gè)文件時(shí),該指針會(huì)指向文件的內(nèi)容*/
FILE *fp;
/*定義一個(gè)整形數(shù) i 和k,一個(gè)容量為6的整形數(shù)組a,其首地址為a*/
int i,a[6]={1,2,3,4,5,6},k;
/*fopen函數(shù):函數(shù)功能: 打開(kāi)一個(gè)文件
函數(shù)原型:FILE * fopen(const char * path,const char * mode);
相關(guān)函數(shù):open,fclose,fopen_s[1] ,_wfopen
所需庫(kù): stdio.h
返回值: 文件順利打開(kāi)后,指向該流的文件指針就會(huì)被返回。若果文件打開(kāi)失敗則返回NULL,并把錯(cuò)誤代碼存在errno 中。
一般而言,打開(kāi)文件后會(huì)作一些文件讀取或?qū)懭氲膭?dòng)作,若打開(kāi)文件失敗,接下來(lái)的讀寫動(dòng)作也無(wú)法順利進(jìn)行,所以在fopen()后請(qǐng)作錯(cuò)誤判斷及處理
*/
fp = fopen("data.dat","w+");
/*將數(shù)組a首地址存的一個(gè)整數(shù)a[0]輸入到文件指針fp所指向的data.dat文件里面*/
fprintf(fp,"%d\n",a[0]);
for (i=1;i6;i++)
{
/*
函數(shù)名: fseek
功 能: 重定位流上的文件指針
用 法: int fseek(FILE *stream, long offset, int fromwhere);
描 述: 函數(shù)設(shè)置文件指針stream的位置。如果執(zhí)行成功,stream將指向以fromwhere為基準(zhǔn),偏移offset個(gè)字 節(jié)的位置。如果執(zhí)行失敗(比如offset超過(guò)文件自身大小),則不改變 stream指向的位置。
*/
fseek(fp,0L,0);
/*這里是通過(guò)文件指針fp,在文件data.dat中讀取一個(gè)整數(shù)寫到k中*/
fscanf(fp,"%d",k);
/*將文件指針偏移到文件首地址*/
fseek(fp,0L,0);
/*通過(guò)for循環(huán),將數(shù)組a中第二個(gè)數(shù)到第六個(gè)數(shù)加上k后再寫入到文件中*/
fprintf(fp,"%d\n",a[i]+k);
}
rewind(fp);
fscanf(fp,"%d",k);
fclose(fp);
printf("%d\n",k);
}
用文件路徑操作函數(shù)找到源代碼所在的文件夾。使用文件操作函數(shù)fopen打開(kāi)源文件即可。
路徑操作函數(shù) chdir。
chdir函數(shù)是C語(yǔ)言中的一個(gè)系統(tǒng)調(diào)用函數(shù)(同cd)功 能:更改當(dāng)前工作目錄。參 數(shù):Path 必選。Path 可能包含驅(qū)動(dòng)器。如果未指定驅(qū)動(dòng)器,則當(dāng)前驅(qū)動(dòng)器上的默認(rèn)目錄或文件夾。返回值:成功返回0 ,失敗返回-1
文件操作函數(shù)fopen。
函數(shù)原型:FILE?* fopen(const char * path,const char * mode);返回值:文件順利打開(kāi)后,指向該流的文件指針就會(huì)被返回。如果文件打開(kāi)失敗則返回NULL,并把錯(cuò)誤代碼存在errno中。一般而言,打開(kāi)文件后會(huì)做一些文件讀取或?qū)懭氲膭?dòng)作,若打開(kāi)文件失敗,接下來(lái)的讀寫動(dòng)作也無(wú)法順利進(jìn)行,所以一般在fopen()后作錯(cuò)誤判斷及處理。
使用fopen,fscanf函數(shù)即可讀取文件數(shù)據(jù)。
1、fopen的函數(shù)原型:FILE
*
fopen(const
char
*
path,const
char
*
mode);
fopen函數(shù)的第一個(gè)參數(shù)是文件路徑,第二個(gè)參數(shù)是打開(kāi)方式,有以下幾種方式:
r
以只讀方式打開(kāi)文件,該文件必須存在。
r+
以可讀寫方式打開(kāi)文件,該文件必須存在。
rb+
讀寫打開(kāi)一個(gè)二進(jìn)制文件,允許讀數(shù)據(jù)。
rw+
讀寫打開(kāi)一個(gè)文本文件,允許讀和寫。
w
打開(kāi)只寫文件,若文件存在則文件長(zhǎng)度清為0,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
w+
打開(kāi)可讀寫文件,若文件存在則文件長(zhǎng)度清為零,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
a
以附加的方式打開(kāi)只寫文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫入的數(shù)據(jù)會(huì)被加到文件尾,即文件原先的內(nèi)容會(huì)被保留。(EOF符保留)
a+
以附加方式打開(kāi)可讀寫的文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫入的數(shù)據(jù)會(huì)被加到文件尾后,即文件原先的內(nèi)容會(huì)被保留。
(原來(lái)的EOF符不保留)
wb
只寫打開(kāi)或新建一個(gè)二進(jìn)制文件;只允許寫數(shù)據(jù)。
wb+
讀寫打開(kāi)或建立一個(gè)二進(jìn)制文件,允許讀和寫。
wt+
讀寫打開(kāi)或著建立一個(gè)文本文件;允許讀寫。
at+
讀寫打開(kāi)一個(gè)文本文件,允許讀或在文本末追加數(shù)據(jù)。
ab+
讀寫打開(kāi)一個(gè)二進(jìn)制文件,允許讀或在文件末追加數(shù)據(jù)。
上述的形態(tài)字符串都可以再加一個(gè)b字符,如rb、w+b或ab+等組合,加入b
字符用來(lái)告訴函數(shù)庫(kù)打開(kāi)的文件為二進(jìn)制文件,而非純文字文件。
返回值:文件順利打開(kāi)后,指向該流的文件指針就會(huì)被返回。如果文件打開(kāi)失敗則返回NULL,并把錯(cuò)誤代碼存在errno中。
2、例程:
#include
#define F_PATH "d:\\myfile\\file.dat"
char c;
int main(){
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp) return -1;//要返回錯(cuò)誤代碼
while(fscanf(fp,"%c",c)!=EOF) printf("%c",c); //從文本中讀入并在控制臺(tái)打印出來(lái)
fclose(fp);
fp=NULL;//需要指向空,否則會(huì)指向原打開(kāi)文件地址
return 0;
}
網(wǎng)站標(biāo)題:c語(yǔ)言file函數(shù)原型 c語(yǔ)言printf函數(shù)原型
當(dāng)前URL:http://jinyejixie.com/article42/dochpec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、用戶體驗(yàn)、網(wǎng)站導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、App設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容