關(guān)于標(biāo)準(zhǔn)IO的打開函數(shù)
說(shuō)起標(biāo)準(zhǔn)IO,他是基于ansic標(biāo)準(zhǔn)的。Ansic就是美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)制定的一個(gè)標(biāo)準(zhǔn)協(xié)議,我們常見的就是c89,c99.等等。這個(gè)標(biāo)準(zhǔn)說(shuō)白了就是咱們用的哪些c庫(kù)。換句話說(shuō)只要有c庫(kù)就可以使用標(biāo)準(zhǔn)IO。跟咱們的操作系統(tǒng)沒有關(guān)系。
要說(shuō)標(biāo)準(zhǔn)IO,我們要先知道一個(gè)結(jié)構(gòu)體,F(xiàn)ILE結(jié)構(gòu)體。這個(gè)結(jié)構(gòu)體是用來(lái)保存文件的信息。一般我們打開文件,內(nèi)容都保存在FILE結(jié)構(gòu)體中。
在標(biāo)準(zhǔn)IO中我們打開文件用的fopen這個(gè)函數(shù),當(dāng)然也會(huì)有其他幾個(gè)函數(shù),這個(gè)我就介紹最常見的。Fopen的原型就是FILE *fopen(const char*path,const char *mode);
他的返回值就是FILE結(jié)構(gòu)體的指針,存放的就是文件的信息。第一個(gè)參數(shù)就是文件的路徑,第二個(gè)參數(shù)就是權(quán)限。
路徑:1.絕對(duì)路徑:就是從跟目錄開始到但當(dāng)前文件的路徑,我們敲寫pwd命令就是絕對(duì)路徑。
2.相對(duì)路徑:就是當(dāng)前的路徑跟你當(dāng)前的文件所在的路徑相同就可以了。
權(quán)限:權(quán)限大概可以分3類。讀,寫,追加。
讀權(quán)限:r 就是read,他的作用就是一以可讀的權(quán)限打開文件。
他有個(gè)特別注意的地方就是文件必須存在,這個(gè)很好理解,要是文件
不存在,肯定不能獨(dú)缺其中的內(nèi)容的。
R+ 也是讀權(quán)限,跟r基本上一樣,但是他可以同事?lián)碛凶x寫的權(quán)限,
因?yàn)樗袀€(gè)“+”號(hào)
寫權(quán)限:w write,他的作用就是以可寫的權(quán)限打開文件。
他要注意的地方就是,要是文件存在,文件的內(nèi)容就會(huì)消失,要是不存
在就會(huì)創(chuàng)建文件。
W+ r,r+ 的關(guān)系跟w w+的關(guān)系是一樣的。W+的作用跟w是相同的
就是多了一個(gè)讀權(quán)限。
追加權(quán)限:a add 我們說(shuō)過(guò)我們要用w打開文件,文件的內(nèi)容就消失了,要
是我們想在文件后面接著寫內(nèi)容怎么辦,就用“a”。不存在也是創(chuàng)建
文件。當(dāng)然a是寫權(quán)限的
A+:a+就是有讀寫權(quán)限的a。
一般的使用就是先定義一個(gè)FILE結(jié)構(gòu)體指針,然后用fopen給FILE結(jié)構(gòu)體賦值。
#include
#define N 64
Int main()
{
FILE *fp;
Char buf[N];
If((fp = open(“test.c”,”w”)) == NULL)
{
Perror(“test.c”);
Fprintf(stdout,”open failed:%s\n”,strerror);
}
Char *p = “hello”;
Char *p = “wrold”;
Fprintf(fp,”helloworld”);
Sprintf(buf,”%s%s”,p,q);
Fprintf(stdout,”%s\n”,buf);
Fclose(fp);
Return 0;
}
如果當(dāng)前路徑下有text.c文件就可以執(zhí)行上面的函數(shù)操作。