新聞中心
C語言文件打開函數(shù)
ANSI
創(chuàng)新互聯(lián)建站是專業(yè)的額濟納網(wǎng)站建設(shè)公司,額濟納接單;提供成都做網(wǎng)站、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行額濟納網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
C規(guī)定文件打開用函數(shù)fopen,關(guān)閉為fclose。
1、調(diào)用方式通常為:
代碼如下:
FILE
*fp;
fp=fopen(文件名,
打開方式);
2、參數(shù)說明:
文件名:
形如"myfile.dat"、"F:\data\myfile.dat"等等;
打開方式:
"r"(只讀)
為輸入打開一個文本文件
"w"(只寫)
為輸出打開一個文本文件
"a"(追加)
向文件文件尾添加數(shù)據(jù)
"rb"(只讀)
為輸入打開一個二進制文件
"wb"(只寫)
為輸出打開一個二進制文件
"r+"(讀寫)
為讀寫打開一個文本文件
"w+"(讀寫)
為讀寫建立一個新的文本文件
"a+"(讀寫)
為讀寫打開一個文本文件
"rb+"(讀寫)
為讀配孫寫打開一個二進制文件
"wb+"(讀寫)
為讀寫建立一個新的二進制文件
"ab+"(讀寫)
為讀寫打開一個二進制文件
3、注意:
(1)用"r"方式打開的文件,不能向其輸入數(shù)據(jù),并且該文件已存在,否則出錯;
(2)用"w"方式打開的文件,只能向該文件輸入數(shù)據(jù),如果所運御打開的文件不存在,則在打開時新建一個以指定的名字命名的文件;如果指定文件存在,則在打開時將該文件刪去,然后新建一個新的文件;
(3)如果函數(shù)fopen打開文件出錯,則fopen返回一個空指針值NULL;
(4)在程序開始運行時,系統(tǒng)自動打開3個標準文件:標準輸入(stdin),標準輸出(stdout),標準出錯輸
出(stderr)。如果要使用輸入輸出終端,則不需要打開,可以直接使用,如旁賣巖fputc(stdout,'a');向屏幕輸出字符a。
c語言庫函數(shù)的打開文件函數(shù)
c語言標準庫中用于打開文件的函數(shù)是fopen()。
函數(shù)原型:FILE
*
fopen(const
char
*
path,const
char
*
mode);
參數(shù)說明:path指明要打開的文件名,mode指明以什么方式打開。詳細在下面介紹。
返回值:文件順利打開后,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,并把錯誤代碼存在errno
中。示例如下
#includestdio.h
//根據(jù)需要修改成自己要打開的文件即可。
#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); //打開一個文件停止操作后,要關(guān)閉打開的文件
fp=NULL;//需要指向空,否則會指向原打開文件地址
return 0;
}
參數(shù)mode的類型:
r
以只讀方式打開文件,該文件必須存在。
r+
以可讀寫方式打開文件,該文件必須存在。
rb+
讀寫打開一個二進制文件,允許讀寫數(shù)據(jù),如喊文件必須存在。
w
打開只寫文件,若文件存在則文件長度渣舉野清為0,即該文件內(nèi)容會消失。若文件不存答肆在則建立該文件。
w+
打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件。
a
以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留。(EOF符保留)
a+
以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留。
(原來的EOF符不保留)
wb
只寫打開或新建一個二進制文件;只允許寫數(shù)據(jù)。
wb+
讀寫打開或建立一個二進制文件,允許讀和寫。
ab+
讀寫打開一個二進制文件,允許讀或在文件末追加數(shù)據(jù)。
C語言常用的函數(shù)有哪些
C語言庫函數(shù),常用庫函數(shù)有:
1、scanf格式輸入函數(shù)
2、printf格式輸出函數(shù)
3、systemdos命令函數(shù)
4、sort排序
5、main主函數(shù)
6、fgets文件讀取字符串函數(shù)
7、fputs文件寫入字符串函數(shù)
8、fscanf文件格式讀取函數(shù)
9、fprintf文件格式寫入函數(shù)
10、fopen打開文件函數(shù)
11、getchar輸入字符函數(shù)
12、putchar輸出字符函數(shù)
13、malloc動態(tài)申請內(nèi)存函數(shù)
14、free釋放內(nèi)存函數(shù)
15、abs求絕對值數(shù)學(xué)函數(shù)
16、sqrt求平方根數(shù)學(xué)函數(shù)
擴展資料
語言組成:
1、數(shù)據(jù)類型
C的數(shù)據(jù)類型包括:整型、字符型、實型或浮點型(單精度和雙精度)、枚舉類型、數(shù)組類型、結(jié)構(gòu)體類型、共用體類型、指針類型和空類型。
2、常量與變量
常量其值不可改變,符號常量名通常用大寫。
變量是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃高物線開頭的一串由字母、數(shù)字或下劃線構(gòu)成的序列,請注意第一個字符必戚襲液須為字母或下劃線,否則為不合法的變量名。變量在編譯時為其分配相應(yīng)存儲單元。
3、數(shù)組
如果一個變量名后面跟著一禪配個有數(shù)字的中括號,這個聲明就是數(shù)組聲明。字符串也是一種數(shù)組。它們以ASCII的NULL作為數(shù)組的結(jié)束。要特別注意的是,方括內(nèi)的索引值是從0算起的。
4、指針
如果一個變量聲明時在前面使用 * 號,表明這是個指針型變量。換句話說,該變量存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內(nèi)容操作符,意思是取這個內(nèi)存地址里存儲的內(nèi)容。指針是 C 語言區(qū)別于其他同時代高級語言的主要特征之一。
參考資料來源:百度百科-函數(shù)
C語言文件函數(shù)
//要另外說下如fprintf(stderr, "Can't open %s\n", file_app);這是向文件或者系統(tǒng)設(shè)備輸出的函數(shù);但他的文件指針為stderr;這是c中的標準錯誤輸出設(shè)備指針,系統(tǒng)自動分配為顯示激饑器故相當于printf("Can't open %s\n", file_app);
#include stdio.h
#include stdlib.h
#include string.h
#define BUFSIZE 1024
#define SLEN 81
void append(FILE *source, FILE *dest);
int main(void)
{
FILE *fa, *fs; //定義2個文件類型指針
int files = 0; // 追加文件個數(shù)
char file_app[SLEN];
char file_src[SLEN]; // 2個字符串用來儲存文件名;
puts("Enter name of destination file:");//輸出Enter name of destination file:
gets(file_app);//輸入要追加的文件名
if ((fa = fopen(file_app, "a")) == NULL)//fa指向追加的目的文件,以追加方式打開文件,如果打開失敗退出;
{
fprintf(stderr, "Can't open %s\n", file_app);
exit(2);
}
if (setvbuf(fa, NULL, _IOFBF, BUFSIZE) != 0)//創(chuàng)建緩沖器與流相關(guān),大小為BUFSIZE,作用是提高IO速度;如果打開睜局失敗退出
{
fputs("Can't create output buffer\n", stderr);
exit(3);
}
puts("Enter name of first source file (empty line to quit):");//輸出Enter name of first source file (empty line to quit):
while (gets(file_src) file_src[0] != '\0')//輸入源文件如果是空串結(jié)束循環(huán)
{
if (strcmp(file_src, file_app) == 0)//如果源和追加文件相同
fputs("Can't append file to itself\n",stderr);
else if ((fs = fopen(file_src, "r")) == NULL)//如果打開源文件失敗
fprintf(stderr, "Can't open %s\n", file_src);
else
{
if (setvbuf(fs, NULL, _IOFBF, BUFSIZE) != 0)//創(chuàng)建緩沖器與流相關(guān),大小為BUFSIZE,作用是提高IO速度;如果打開失敗開始下次循環(huán)
{
fputs("Can't create input buffer\n",stderr);
continue;
}
append(fs, fa);//明早返函數(shù)
if (ferror(fs) != 0)//檢查文件操作是否有錯
fprintf(stderr,"Error in reading file %s.\n",
file_src);
if (ferror(fa) != 0)
fprintf(stderr,"Error in writing file %s.\n",
file_app);
fclose(fs);//關(guān)閉源文件
files++;//追加文件數(shù)+1
printf("File %s appended.\n", file_src);
puts("Next file (empty line to quit):");
}
}
printf("Done. %d files appended.\n", files);
fclose(fa);//關(guān)閉追加文件
return 0;
}
void append(FILE *source, FILE *dest)
{
size_t bytes;
static char temp[BUFSIZE];
while ((bytes = fread(temp,sizeof(char),BUFSIZE,source)) 0)//把源文件的內(nèi)容追加到追加文件,塊大小sizeof(char),塊數(shù)為BUFSIZE
fwrite(temp, sizeof (char), bytes, dest);//寫文件塊大小sizeof(char),塊數(shù)為BUFSIZE
}
網(wǎng)頁名稱:關(guān)于C語言的文件函數(shù) 關(guān)于c語言的文件函數(shù)怎么寫
鏈接地址:http://ef60e0e.cn/article/ddpecdd.html