欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:【C語言】文件操作

柚子快報(bào)邀請(qǐng)碼778899分享:【C語言】文件操作

http://yzkb.51969.com/

目錄

一、什么是文件:

二、文件名:

三、文件指針:

四、文件的打開與關(guān)閉:

五、文件的順序讀寫:

1、fgetc與fputc:

2、fgets與fputs:

3、fscanf與fprintf:

4、fread和fwrite:

六、文件的隨機(jī)讀寫:

1、fseek:

2、ftell:

七、文件緩沖區(qū):

一、什么是文件:

磁盤上的那些文件就是文件。文件能夠做到實(shí)例化,比如在學(xué)生信息系統(tǒng)中,將學(xué)生的信息存儲(chǔ)到文件中就不會(huì)每次重啟程序的時(shí)候消失了。

文件分為程序文件和數(shù)據(jù)文件,

程序文件:源程序文件(后綴為.c),目標(biāo)文件(Windows環(huán)境中后綴為.obj),可執(zhí)行程序(Windows環(huán)境后綴為.exe);

數(shù)據(jù)文件:文件可以是程序運(yùn)行時(shí)讀寫的數(shù)據(jù),比如在程序運(yùn)行中,從中讀取數(shù)據(jù)或者寫入其中或者追加其中的文件。

這里討論的是數(shù)據(jù)文件,在磁盤上進(jìn)行處理的文件。

二、文件名:

文件名包含三部分:文件路徑+文件主體+文件后綴。

? ? ? ? ? ? ? ? ? ? ?例如:E:\work\test.txt

三、文件指針:

每個(gè)被使用的文件都在內(nèi)存中開辟了一個(gè)相應(yīng)的文件信息區(qū),用來存放文件的相關(guān)信息(如文件的名字,文件狀態(tài)及文件當(dāng)前的位置等)。這些信息是保存在一個(gè)結(jié)構(gòu)體變量中的。該結(jié)構(gòu)體類型是有系統(tǒng)聲明的,取名為FILE。

四、文件的打開與關(guān)閉:

1、打開:(fopen)

返回一個(gè)文件指針類型,前一個(gè)參數(shù)為文件名,后一個(gè)參數(shù)如下:

其中mode可以是:

2、關(guān)閉:(fclose)

需要傳文件指針,如果關(guān)閉成功就返回0,關(guān)閉失敗就返回EOF。

int main()

{

FILE* pf = fopen("E:\\test\\test1.txt", "r");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

else {

printf("打開文件成功");

}

fclose(pf);

pf = NULL;

return 0;

}

以上就是一個(gè)打開文件的標(biāo)準(zhǔn)形式。

五、文件的順序讀寫:

接下來依次介紹上述函數(shù):

1、fgetc與fputc:

這組是從文件中讀取一個(gè)字符或?qū)懭胍粋€(gè)字符的:

往文件中寫入字符:

fputc:

int main()

{

FILE* pf = fopen("E:\\test\\test1.txt", "w");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

//寫文件:

fputc('a', pf);

fputc('b', pf);

fputc('c', pf);

fputc('d', pf);

fputc('e', pf);

fclose(pf);

pf = NULL;

return 0;

}

從文件中讀取字符:

fgetc:

int main()

{

FILE* pf = fopen("E:\\test\\test1.txt", "r");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

//讀取文件:

char ch1 = fgetc(pf);

printf("%c\n", ch1);

char ch2 = fgetc(pf);

printf("%c\n", ch2);

char ch3 = fgetc(pf);

printf("%c\n", ch3);

char ch4 = fgetc(pf);

printf("%c\n", ch4);

fclose(pf);

pf = NULL;

return 0;

}

2、fgets與fputs:

這是將數(shù)據(jù)一行一行地進(jìn)行處理的。

往文件中寫入數(shù)據(jù):

fputs:

int main()

{

FILE* pf = fopen("E:\\test\\test1.txt", "w");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

//寫文件:

fputs("hello ppr\n", pf);

fputs("hello world\n", pf);

//關(guān)閉文件

fclose(pf);

pf = NULL;

return 0;

}

從文件中讀數(shù)據(jù)。

fgets:

int main()

{

FILE* pf = fopen("E:\\test\\test1.txt", "r");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

//讀取文件:

char arr[20] = { 0 };

fgets(arr, 20, pf);

printf("%s", arr);

fgets(arr, 20, pf);

printf("%s", arr);

//關(guān)閉文件

fclose(pf);

pf = NULL;

return 0;

}

如上所示,就是剛剛寫好的文件中讀取字符串放在arr數(shù)組中,然后在打印在屏幕上,

注意:在這里的20是指讀取一整行的20個(gè)字符,如果這行不夠20個(gè)字符并不會(huì)去下一行讀。

? ? ? ? ? ?還有,這里在最后會(huì)加上一個(gè)\0所以實(shí)際讀取的字符是19,比我需要讀取的字符小1。

3、fscanf與fprintf:

這組是格式化的寫入和讀取文件:

格式化寫入文件:

第一個(gè)參數(shù)是一個(gè)文件指針類型,需要我的文件寫入到哪兒。

后面的參數(shù)就是和printf一樣了

struct S

{

char name[20];

int age;

float score;

};

int main()

{

FILE* pf = fopen("E:\\test\\test1.txt", "w");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

struct S s = { "張三",18,91.7 };

//寫文件:

fprintf(pf, "%s %d %f", s.name, s.age, s.score);

//關(guān)閉文件

fclose(pf);

pf = NULL;

return 0;

}

格式化讀文件:

第一個(gè)參數(shù)是一個(gè)文件指針類型,需要我的數(shù)據(jù)從哪里讀

后面就是和scanf一樣了(記得取地址哦)

struct S

{

char name[20];

int age;

float score;

};

int main()

{

struct S s;

FILE* pf = fopen("E:\\test\\test1.txt", "r");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

//讀取文件:

fscanf(pf, "%s %d %f", s.name, &(s.age), &(s.score));

printf("%s %d %f", s.name, s.age, s.score);

//關(guān)閉文件

fclose(pf);

pf = NULL;

return 0;

}

4、fread和fwrite:

這是以二進(jìn)制形式輸入和輸出的,這個(gè)只適用于文件流,上述其他的適用于所有流

第一個(gè)參數(shù)是取要存儲(chǔ)變量的地址,第二個(gè)是這個(gè)變量的大小,第三個(gè)是我要存儲(chǔ)幾個(gè)變量

第四個(gè)是文件所在的位置。

struct S

{

char name[20];

int age;

float score;

};

int main()

{

FILE* pf = fopen("E:\\test\\test1.txt", "wb");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

struct S s = { "張三",18,91.7 };

//寫文件:

fwrite(&s, sizeof(struct S), 1, pf);

//關(guān)閉文件

fclose(pf);

pf = NULL;

return 0;

}

以上就是以二進(jìn)制的形式存儲(chǔ)的,看是看不懂,但是可以讓計(jì)算機(jī)以二進(jìn)制形式讀它:

這個(gè)形式參數(shù)的意義基本fwrite是一樣的,不一樣的是&s是將讀出來的數(shù)據(jù)放到變量s中

struct S

{

char name[20];

int age;

float score;

};

int main()

{

struct S s;

FILE* pf = fopen("E:\\test\\test1.txt", "wr");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

//讀取文件:

fread(&s, sizeof(struct S), 1, pf);

printf("%s %d %f", s.name, s.age, s.score);

//關(guān)閉文件

fclose(pf);

pf = NULL;

return 0;

}

六、文件的隨機(jī)讀寫:

1、fseek:

第一個(gè)參數(shù)是我要操作文件的地址,第三個(gè)參數(shù)是將文件的光標(biāo)從哪兒開始偏移的,第二個(gè)參數(shù)是光標(biāo)進(jìn)行偏移的個(gè)數(shù)。

第一個(gè)從文件開頭開始偏移,

第二個(gè)從文件當(dāng)前位置開始偏移,

第三個(gè)從文件末尾開始偏移。

int main()

{

FILE* pf = fopen("E:\\test\\test2.txt", "r");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

//讀取文件:

int ch = fgetc(pf);

printf("%c\n", ch);

ch = fgetc(pf);

printf("%c\n", ch);

ch = fgetc(pf);

printf("%c\n", ch);

ch = fgetc(pf);

printf("%c\n", ch);

fseek(pf, -2, SEEK_CUR);

ch = fgetc(pf);

printf("%c\n", ch);

fseek(pf, 1, SEEK_SET);

ch = fgetc(pf);

printf("%c\n", ch);

//關(guān)閉文件

fclose(pf);

pf = NULL;

return 0;

}

2、ftell:

返回文件指針相對(duì)于起始位置的偏移量:

int main()

{

FILE* pf = fopen("E:\\test\\test2.txt", "r");

if (pf == NULL)

{

perror("fopen fail");

return 1;

}

//讀取文件:

fseek(pf, -3, SEEK_END);

printf("%d\n", ftell(pf));

//關(guān)閉文件

fclose(pf);

pf = NULL;

return 0;

}

七、文件緩沖區(qū):

文件緩沖區(qū)是內(nèi)存與硬盤(比如文件)進(jìn)行數(shù)據(jù)處理的時(shí)候,存在的一個(gè)區(qū)域,這個(gè)是先放在這個(gè)緩沖區(qū)中,等到裝滿緩沖區(qū)后才一起送到硬盤上,或者主動(dòng)刷新緩沖區(qū)來進(jìn)行傳輸。

主動(dòng)傳輸有(fflush或fclose)所以在文件打開后后面記得關(guān)閉。

柚子快報(bào)邀請(qǐng)碼778899分享:【C語言】文件操作

http://yzkb.51969.com/

精彩鏈接

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19239781.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄