国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Linux基礎 ——’文件編程‘是怎么回事?

共 16893字,需瀏覽 34分鐘

 ·

2022-04-11 11:31


LINUX基礎 ——文件編程篇

「Linux 一切皆是文件 文件系統(tǒng)(文件夾/文件)硬件設備 ,管道,數(shù)據(jù)庫,Socket等」

一、文件編程概述:

1.應用中比如:「賬單,游戲進度,配置文件等?!?/strong>2.用代碼操作文件:「實現(xiàn)文件創(chuàng)建,打開,編輯等自動化執(zhí)行。」

二、計算機如何幫我們自動化完成以上操作呢?

操作系統(tǒng)提供了一系列的API ?如Linux系統(tǒng):

打開 ? ? ? ? ? ? open

讀寫 ? ? ? ? ? ? write/read

光標定位 ? ? ?lseek

關閉 ? ? ? ? ? ? ?close

三、文件打開及創(chuàng)建

打開/創(chuàng)建文件

頭文件:

「#include #include #include

int open(const char *pathname , int flags); //(參數(shù)1:字符指針 指向文件路徑 , 參數(shù)2:整型數(shù)權限)

int open(const char *pathname , int ?flags , mode_t ?mode); //open 返回值是文件描述符——沒有文件返回值就無法用write(); ?和 ?read();

參數(shù)說明:

*pathname ?: ? //要打開的文件名(含路徑,缺省為當前路徑)

flags ? :

  • O_RDONLY ? ?只讀打開
  • O_WRONLY ? 只寫打開
  • O_RDWR ? ? ? 可讀可寫可打卡

「當我們附帶了權限后,打開的文件就只能按照這種權限來操作?!?/strong>「以上這三個常數(shù)中應當只指定一個?!?/strong>

int?creat(const?char?*filename?,?mode_t?mode)
filename:要創(chuàng)建的文件名(包含路徑,缺省為當前路徑)
mode:創(chuàng)建模式??//可讀可寫可執(zhí)行

常見創(chuàng)建模式:

?宏表示???????數(shù)字
?S_IRUSR???????4??????可讀
?S_IWUSR???????2??????可寫
?S_IXUSR???????1??????可執(zhí)行
?S_IRWXU???????7??????可讀,寫,執(zhí)行?

示例代碼:(在路徑/Home/CLC/下創(chuàng)建了file1可讀可寫可執(zhí)行文件)

#include
#include
#include
#include
#include

int?main()
{
???int?fd;
???char?*buf?=?"test";
???fd?=?creat("/home/CLC/file",S_IRWXU);???//S_IRWXU??可讀可寫可執(zhí)行
???return?0;
}

==「下列常數(shù)是可選擇的:」==

1. O_CREA //若文件不存在則創(chuàng)建它。

使用此選項時,「需要同時說明第三個參數(shù)mode,用其說明該新文件的存取許可權限?!?/strong>
「mode:一定是在flags中使用了O_CREAT標志,mode記錄待創(chuàng)建的文件的訪問權限?!?/strong>

「O_CREAT 若文件不存在則創(chuàng)建它 ? 示例代碼:」

#include
#include
#include
#include

int?main()
{
???int?fd;????//定義整型返回值
???fd?=?open("./file",O_RDWR);??//open指令?打開可讀可寫file文件返回值
???printf("fd?=?%d\n",fd);
???if(fd?==?-1){?????????//若返回值為-1??沒有file文件
??????printf("open?file?failed\n");
??????fd?=?open("./file"?,?O_RDWR?|?O_CREAT?,?0600);???
??????//open?指令?若沒有file文件?”?|?O_CREAT?”?創(chuàng)建file文件?權限0600??6=4+2??所以是rw??可讀可寫
??????if(fd>0){
??????????printf("creat?file?success\n");
??????}???
???}
???printf("fd=%d\n?,fd");
???return?0;
}

結(jié)果:

「注意:」

「fd = open("./file",O_RDWR);」 ? ? //open指令 打開可讀可寫file文件返回值

「fd = open("./file" , O_RDWR ?| O_CREAT , 0600);」
// ?open 指令 若沒有file文件 ” | O_CREAT ” 創(chuàng)建file文件 權限0600 ?6=4+2 ?所以是rw ?可讀可寫

權限0600的含義:

「—表示普通文件 r (4) 可讀 ? ?w(2)可寫 rw 表示可讀可寫 ?x(1)執(zhí)行」「0600 :6=4+2 所以是rw 可讀可寫 0是同組 0其他組」

2. O_EXCL //如果同時指定了OCREAT , 而文件已經(jīng)存在,則打開失敗或者返回-1

「O_EXCL ?//如果同時指定了OCREAT , 而文件已經(jīng)存在,則打開失敗或者返回-1 ? 示例代碼:」

#include
#include
#include
#include

int?main(){
???int?fd;
???fd?=?open("./file",O_RDWR?|?O_CREAT?|?O_EXCL?,?0600);
???if(fd?==?-1){?????//若返回值為-1??沒有file文件
?????printf("file?exist\n");
?????return?0;
???}
}

注意:

「fd = open("./file",O_RDWR | O_CREAT | O_EXCL , 0600);」

3. O_APPEND//每次寫時都加到文件的尾端。

「O_APPEND //每次寫時都加到文件的尾端 ?示例代碼:」

#include
#include
#include
#include

int??main(){
???int?fd;
???char?*buf?=?"19990330";
???
???fd?=?open("./file",O_RDWR?|?O_APPEND);
???
???printf("open?susceess:?fd?=?%d?\n",?fd);
???
???int?n_write?=?write(fd?,buf,strlen(buf));
???
???if(n_write?!=?-1){
??????????printf("write?%d?byte?to?file\n",n_write);
???}
???close(fd);
???return?0;
}

注意:

「fd = open("./file",O_RDWR | O_APPEND);」

4. O_TRUNC屬性去打開文件時,如果這個文件中本來是有內(nèi)容的,而且為只讀或者只寫 成功打開,則將其長度截斷為0。

「O_TRUNC屬性去打開文件時,如果這個文件中本來是有內(nèi)容的,把原先內(nèi)容全部覆蓋掉,示例代碼:」

#include
#include
#include
#include

int?main(){
??int?fd;
??char?*buf?="19990330";
??
??fd?=?open("./file",O_RDWR?|?O_TRUNC);
??printf("open?susceess:fd?=%d\n",fd);
??int?n_write?=?write(fd?,buf?,strlen(buf));
??if(n_write?!=?-1){
????????printf("write?%d?bute?to?file\n",n_write);
??}
??close(fd);
??return?0;
}

注意:

「fd = open("./file",O_RDWR | O_TRUNC);」

ls-l ?是把文件所有內(nèi)容列出來

-rwxr-xr-x 1 CLC book ?8478 ?Fed 9 12:36 ?mode -rw-r --r -- 1 CLC book ? 385 ? ?Fed 9 12:36 ?mode.c -rw ------ 1 CLC ? book ? ? 0 ? ? ?Fed 9 12:44 ?file

—表示普通文件 r (4) 可讀 w(2)可寫 rw 表示可讀可寫 x(1)執(zhí)行

四、文件寫入操作編程

寫入文件:==「write」== 頭文件: ? ?==「#include==

「ssize_t write」 (int fd , const void *buf , size_t count);
==「//將緩沖區(qū)buf指針指向內(nèi)存數(shù)據(jù),寫conuct的大小 到 fd里?!?/strong>==

(int fd , const void *buf , size_t count) 參數(shù):(文件描述符 ,【無類型指針是一個緩沖區(qū)】,寫入文件的大?。?/p>

文件寫入操作示例代碼:

#include
#include
#include
#include
#include
#include

int?main()
{
????int?fd;
????char?*buf?=?"Refuel.CONG";
????fd?=?open("./file",O_RDWR);
????printf("fd=%d\n",fd);
????if(fd?==?-1){
????????printf("open?file?failed\n");
????????fd?=?open("./file",O_RDWR?|?O_CREAT?,?0600);
????????if(fd>0){
????????????printf("creat?file?success\n");
????????}
????}
????//ssize_t?write(int?fd?,?const?void?*buf?,?size_t?count);
????//將緩沖區(qū)buf指針指向內(nèi)存數(shù)據(jù),寫conut大小到fd。
????write(fd,buf,strlen(buf));
????printf("fd=%d\n",fd);
????close(fd);???//關閉fd文件
????return?0
}

strlen(); 函數(shù)是用來 真正計算有效字符長度用strlen 頭文件是:

五、文件讀取操作

讀取文件:==「read」== 頭文件: ?==「#include==

「ssize_t read」(int fd , const void *buf , size_t count); ==「//從fd個文件讀取count個字節(jié)數(shù)據(jù)放到buf里」==

返回值:若讀取成功,讀多少個字節(jié)返回多少個字節(jié),若讀到尾什么都沒讀到返回0,讀取失敗返回-1

文件讀取示例代碼:

#include
#include
#include
#include
#include
#include

int?main()
{
???int?fd;
???char?*buf?="Refuel.CONG";
???fd=?open("./file",O_RDWR);
???printf("fd=%d\n",fd);
???if(fd?==?-1){
???????printf("open?file?failed\n");
???????fd?=?open("./file",?O_RDWR?|?O_CREAT?|?,0600);
???????if(fd>0){
????????????printf("create?file?success\n");
???????}
???}
int?n_write?=?write(fd,buf,strlen(buf));
if(n_write?!=?-1){
??????printf("write%d?byte?to?file\n",n_write);??//若讀取成功,返回讀到的??ite
}
char?*readBuf;
readBuf?=?(char*)malloc(sizeof(char)*n_write+1);

int?n_read?=?read(fd,reafBuf?,?n_write);
printf("read=%d?,?context:%s\n",n_read,readBuf);
close(fd);
return?0;
}

結(jié)果什么都沒讀取到:是因為光標的原因,光標在寫入數(shù)據(jù)后,光標停在寫完的位置,讀取的時候光會變后面,什么也沒有所以讀取不到。

==「解決辦法:」==

  1. 把光標移動到頭。
  2. 重新打開文件。

「重新打開文件的方式解決光標的問題:」

#include
#include
#include
#include
#include
#include

int?main()
{
???int?fd;
???char?*buf?="Refuel.CONG";
???fd=?open("./file",O_RDWR);
???printf("fd=%d\n",fd);
???if(fd?==?-1){
???????printf("open?file?failed\n");
???????fd?=?open("./file",?O_RDWR?|?O_CREAT?|?,0600);
???????if(fd>0){
????????????printf("create?file?success\n");
???????}
???}
int?n_write?=?write(fd,buf,strlen(buf));
if(n_write?!=?-1){
??????printf("write%d?byte?to?file\n",n_write);??//若讀取成功,返回讀到的??ite
}

close(fd);????????????????????//寫完數(shù)據(jù)后關閉文件
fd?=?open("./file",O_RDWR);????//重新打開

char?*readBuf;
readBuf?=?(char*)malloc(sizeof(char)*n_write+1);

int?n_read?=?read(fd,reafBuf?,?n_write);
printf("read=%d?,?context:%s\n",n_read,readBuf);
close(fd);
return?0;
}

結(jié)果為:

六、文件光標移動操作

光標移動:==「lseek」== 頭文件:

  1. ==「#include==
  2. ==「#include==

宏:

  1. ==「SEEK_SET」== ? ?「//指向文件的頭」
  2. ==「SEEK_CUR」== ? 「//指向當前光標位置」
  3. ==「SEEK_END」== ? 「//指向文件的尾」

「off_t ?lseek」(int fd , off_t 「offset」 , int 「whence」); 作用:「將文件讀寫指針相對 whence 移動 offset 個字節(jié)」參數(shù)說明:「(文件描述符,偏移值,固定的位置)」

#include
#include
#include
#include
#include
#include

int?main()
{
???int?fd;
???char?*buf?="Refuel.CONG";
???fd=?open("./file",O_RDWR);
???printf("fd=%d\n",fd);
???if(fd?==?-1){
???????printf("open?file?failed\n");
???????fd?=?open("./file",?O_RDWR?|?O_CREAT?|?,0600);
???????if(fd>0){
????????????printf("create?file?success\n");
???????}
???}
int?n_write?=?write(fd,buf,strlen(buf));
if(n_write?!=?-1){
??????printf("write%d?byte?to?file\n"n_write);?
}
char?*readBuf;
readBuf?=?(char?*)malloc(sizeof?(char)*n_write+1);

lseek?(fd,0,SEEK_SET);???//參數(shù):(文件描述,偏移值,固定的位置)
//lseek(fd,-11?,SEEK_CUR);??//所在光標位置往前偏移11個

int?n_read?=?read(fd?,readBuf,n_write);
printf("read=%d,context:%s\n",n_write,readBuf);
close(fd);
return?0;

lseek (fd,0,SEEK_SET); ? //參數(shù):(文件描述,偏移值,固定的位置) lseek(fd,-11,SEEK_CUR); ?//所在光標位置往前偏移11個

七、文件操作原理簡述

1.文件描述符:

  1. 對于內(nèi)核而言,所有打開文件都由文件描述符引用。文件描述符是一個非負整數(shù)。當打開一個現(xiàn)存文件或者創(chuàng)建一個新文件時,內(nèi)核向進程返回一個文件描述符。當讀寫一個文件時,用open和creat返回的文件描述符標識該文件,將其作為參數(shù)傳遞給read和write。按照慣例,UNIX shell 使用文件描述符0與進程的標準輸入相結(jié)合,文件描述符1與標準輸出相結(jié)合,文件描述符2與標準錯誤輸出相結(jié)合。STDIN_FILENO 、STDOUT_FILENO、STDERR_FILENO這幾個宏代替了0,1,2這幾個數(shù)。
  1. 文件描述符,這個數(shù)字在一個進程中表示一個特定含義,當我們open一個文件時,操作系統(tǒng)在內(nèi)存中構建了一些數(shù)據(jù)結(jié)構來表示這個動態(tài)文件,然后返回給應用程序一個數(shù)字作為文件描述符,這個數(shù)字就和我們內(nèi)存中維護的這個動態(tài)文件的這些數(shù)據(jù)結(jié)構綁定上了,以后我們應用程序如果要操作這個動態(tài)文件,只需要用這個文件描述符區(qū)分。
  1. 文件描述符的作用域就是當前進程,除了這個進程文件描述符就沒有意義了,open函數(shù)打開文件,打開成功返回一個文件描述符,打開失敗,返回-1。

2.linux系統(tǒng)默認:

標準描述符:「標準輸入(0) ?標準輸出(1) 標準錯誤(3)」

#include
#include
#include
#include
#include
#include
int?main(){
????int?fd;
????char?readBuf[128];
????
????int?n_read?=?read(0,readBuf,5);?????//?0?標準輸入
????int?n_write?=?write(1,readBuf,strlen(readBuf));?//?1?標準輸出
????printf("\n?end!\n");
????return?0;
}
在這里插入圖片描述

3.操作文件時候:

「打開/創(chuàng)建文件 ? ——> ? 讀取文件/寫入文件 ?——> ?關閉文件」==

1、在Linux中要操作一個文件,一般是先open打開一個文件,得到文件描述符,然后對文件進行讀寫操作(或其他操作),最后是close關閉文件即可。

2、強調(diào)一點:我們對文件進行操作時,一定要先打開文件,打開成功之后才能操作,如果打開失敗,就不用進行后邊的操作了,「最后讀寫完成后,一定要關閉文件,否則會造成文件損壞?!?/strong>

3、「文件平時是存放在塊設備中的文件系統(tǒng)文件中的,我們把這種文件叫靜態(tài)文件」,當我們?nèi)pen打開一個文件時,linux內(nèi)核做的操作包括:內(nèi)核在進程中建立一個打開文件的數(shù)據(jù)結(jié)構,記錄下我們打開的這個文件;內(nèi)核在內(nèi)存中申請一段內(nèi)存,并且將靜態(tài)文件的內(nèi)容從塊設備中讀取到內(nèi)核中特定地址管理存放(叫動態(tài)文件)。read write 都是對動態(tài)文件進行操作

4、打開文件以后,以后對這個文件的讀寫操作,都是針對內(nèi)存中的這一份動態(tài)文件的,而并不是針對靜態(tài)文件的。當然我們對動態(tài)文件進行讀寫以后,此時內(nèi)存中動態(tài)文件和快設備文件中的靜態(tài)文件就不同步了,當我們close關閉動態(tài)文件名,close內(nèi)部內(nèi)核將內(nèi)存中的動態(tài)文件的內(nèi)容去更新(同步)塊設備中的靜態(tài)文件。

5、為什么這么設計,不直接對塊設備直接操作。「塊」(假設有100字節(jié))設備本身讀寫非常不靈活,是按塊讀寫的,最小只讀100字節(jié),而「內(nèi)存是擠字節(jié)單位操作的可而具可以隨機操作,很靈活」。

「靜態(tài)文件」放入磁盤中的文件是靜態(tài)文件, 如:桌面上的文件.jpg

「動態(tài)文件」open靜態(tài)文件后,會在linux內(nèi)核產(chǎn)生結(jié)構體記錄文件 ? 如:fd ? 信息節(jié)點,buf(內(nèi)容,內(nèi)存)

調(diào)用close時候,會把所有信息緩存到磁盤中

八、文件操作編程小練習—實現(xiàn)cp指令代碼:

==「cp ( src.c ?//源文件 ,dest.c //復制到的目標文件)」==

「實現(xiàn)cp操作:」

1.c語言參數(shù):./a.out ?_ _ ==2.實現(xiàn)思路:==

  1. 打開src.c
  2. 讀src到buf
  3. 創(chuàng)建/打開dest.c
  4. 將buf寫入dest.c
  5. close兩個文件

==c語言參數(shù):==「// 參數(shù)(argc是數(shù)組)(argv是二級指針是包含數(shù)組的數(shù)組:是argv里的每一項都是一個數(shù)組)」

#include
int?main(?int??argc?,?char?**agrv)????//?參數(shù)(argc是數(shù)組)(argv是包含數(shù)組的數(shù)組:是argv里的每一項都是一個數(shù)組)
{
????printf("totol?params:%d\n",argc);
????printf("No.1??params:%d\n",argv[0]);
????printf("No.2??params:%d\n",argv[1]);
????printf("No.3??params:%d\n",argv[2]);?
???return?0;
}

輸入 :./a.out ? des ?src 結(jié)果:totol params : 3 No.1 ?params : ?./a.out No.2 ?params : ?des No.3 ?params : src

「實現(xiàn)mycp操作代碼:」

#include
#include
#include
#include
#include
#include

int?main(int?argc?,char?**argv){
????int?fdSrc;
????int?fdDest;
????char?*readBuf?=?NULL;
????if(argc?!=?3){
????????printf("param?error\n");
????????exit(-1);
????}
????
fdSrc?=?open(argv[1],O_RDWR);??????//1.?打開fdSrc.c(源文件)
int?size?=?lseek(fdSrc?,0,?SEEK_END);???//光標記錄文件大小
lseek(fdSrc?,?0,?SEEK_SET);???//??!千萬記得把?光標回到頭
readBuf?=?(char?*)malloc(sizeof(char)?*size+8);??//開辟readBuf空間大小

int?n_read?=?read(fdSrc,readBuf,size);???//2.?讀取fdSrc(源文件)到readBuf緩沖區(qū)

fdDest?=?open(argv[2],O_RDWR?|?O_CREAT?|?O_TRUNC?,0600);???//3.?打開/創(chuàng)建fdDest.c
int?n_write?=?write(fdDest,readBuf,strlen(readBuf));??//4.?將readbuf寫入到fdDest.c

close(fdSrc);????//5.關閉兩個文件
close(fdDest);
return?0;
}

mycp容易出現(xiàn)的小問題—實現(xiàn)優(yōu)化:

  1. 「用 lseek來光標計算size數(shù)組」
char?*readBuf?=?NULL;

?int?size?=?lseek(fdSrc,0,SEEK_END);
?????lseek(fdSrc?,?0?,SEEK_SET);
?????readBuf?=?(char?*)malloc(sizeof(char)*size?+?8);
  1. 「若要是拷貝大于1024的文件就不行」
?int?n_read?=?read(fdSrc,readBuf,size);????//讀取大小用lseek查出的大小.

3.「目標文件存在并且存在一些數(shù)據(jù),拷貝就會覆蓋了原來數(shù)據(jù)的一部分」

解決方法:「O_TRUNC」 屬性去打開文件時,如果這個文件中本來是有內(nèi)容的,而且為只讀或者只寫成功打開,則將其長度截斷為0

fdDes?=?open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);

九、文件編程小應用之修改程序的配置文件

==「(工作中常用)」== 配置文件的修改

例如:SPEED=5 LENG=100 SCORE=90 LEVEL=95

「修改指定內(nèi)容的思路:」

  1. 找到(要修改的)位置
  2. (修改的位置)往后移動到(要改的值 )
    3. 修改要改的值

找尋修改位置時候,用到 「strstr()」 函數(shù);功能:用來檢索子串在字符串中首次出現(xiàn)的位置

「修改LENG的值 示例代碼:」

#include
#include
#include
#include
#include
#include
#include

int?main(int?argc?,?char?**argv){
???int?fdSrc;
???char?*readBuf=NULL;
???if(argc?!=?2?){
???????printf("pararm?error\n");
???????exit(-1);
???}
??fdSrc?=?open(argv[1],O_RDWR);
??int?size?=?lseek(fdSrc,0,SEEK_END);
??lseek?(fdSrc,0,SEEK_SET);
??
??readBuf?=(char?*)malloc(sizeof(char)*size+8);
??int?n_read=?read(fdSrc,readBuf,size);
??
??char?*p=strstr(readBuf,"LENG=");?//找到(要修改的)位置???
??//參數(shù)1?要找的源文件??2.“要找的字符串”
??if(p==NULL){
????printf("not?found\n");
????exit(-1);
??}
??p=p+strlen("LENG=");??//移動字符串個字節(jié)
??*p='0';??????//*p??取內(nèi)容
??
lseek?(fdSrc,0,SEEK_SET);
int?n_write?=write(fdSrc,readBuf,strlen(readBuf));
close(fdSrc);
return?0;
}

「可以把封裝成一個函數(shù):」

void?*changefile(int?fd,char?*readbuf,char*?f,char?t){
????????char?*p?=?strstr(readbuf,f);
????????if(p?==?NULL){
???????????printf("no?found\n");
???????????exit(-1);
????????}
????????p?=?p?+?strlen(f);
????????*p?=?t;
?????}

int?main(int?argc,char?**argv)
{
??????changefile(fdSrc,readBuf,"LENG=",'6');
}

十、寫一個整數(shù)到文件

「ssize_t ?write」(int fd , const void *buf , size_t count);
//將緩沖區(qū)buf指針指向內(nèi)存數(shù)據(jù),寫conut大小到fd.

「ssize_t ?read」(int fd , const void *buf , size_t count);
//從fd個文件讀取count個字節(jié)數(shù)據(jù)放到buf里

1.寫入整型數(shù)代碼:

#include
#include
#include
#include
#include
#include
#include

int?main(){
???int?fd;
???int?data?=?100;
???int?data2?=?0;
???fd=open("./flie1",O_RDWR);
???
???int?n_write?=write(fd,?&data,?sizeof(int));
???lseek(fd,0,SEEK_SET);
???int?n_read?=read(fd,?&data2,?sizeof(int));

???printf("read?%d\n",data2);
???close(fd);
???return?0;
}
在這里插入圖片描述

2.寫入結(jié)構體代碼(1):

struct?Test
{

???int?a;
???char?c;
};

int?main(){
???int?fd;
???int?Test?data?=?{100,'a'};
???int?Test?data2?;
???fd=open("./flie1",O_RDWR);
???
???int?n_write?=write(fd,?&data,?sizeof(struct?Test));
???lseek(fd,0,SEEK_SET);
???int?n_read?=read(fd,?&data2,?sizeof(struct?Test));

???printf("read?%d?%s\n",data2.a,data2.c);
???close(fd);
???return?0;
}

3.寫入結(jié)構體代碼(2):

struct?Test
{

???int?a;
???char?c;
};

int?main(){
???int?fd;
???int?Test?data[2]?=?{{100,'a'},{101,'b'}};
???int?Test?data2[2];
???fd=open("./flie1",O_RDWR);
???
???int?n_write?=write(fd,?&data,?sizeof(struct?Test)*2);
???lseek(fd,0,SEEK_SET);
???int?n_read?=read(fd,?&data2,?sizeof(struct?Test)*2);

???printf("read?%d?%s\n",data2[0].a,data2[0].c);
???printf("read?%d?%s\n",data2[1].a,data2[1].c);
???close(fd);
???return?0;
}

「注意寫入/讀入的 大小:」 ?sizeof(struct Test) 「乘2」

「緩沖區(qū)可以寫入 :整數(shù),字符,結(jié)構體等」

十一、標準C庫對文件操作引入

1. open 和 fopen 的區(qū)別

「1.來源」

  • open是UNIX系統(tǒng)調(diào)用函數(shù),返回的是文件描述符,它是文件在文件描述符表里的索引。

  • fopen是ANSIC標準中的c語言庫函數(shù),在不同的系統(tǒng)中應該調(diào)用不同的內(nèi)核API,返回值是一個指向文件結(jié)構的指針。

「2.移植性」

這一點從上面的來源就可以推斷出來,fopen是C標準函數(shù),因此用有良好的移植性;而oprn是UNIX系統(tǒng)調(diào)用,移植性有限。如windows下相似的功能使用API函數(shù)。

「3.適用范圍」

open返回文件描述符,而文件描述符是UNIX系統(tǒng)下的一個重要概念,UNIX下的一切設備都是文件的形式操作,如網(wǎng)絡套件字,硬件設備(驅(qū)動)等。當然包括操作普通正規(guī)文件。fopen是用來操縱普通正規(guī)文件的。

「4.緩沖」

  1. 「緩沖文件系統(tǒng)」

    緩沖文件系統(tǒng)的特點是:在內(nèi)存開辟一個“緩沖區(qū)”,為程序中的每一個文件使用;當執(zhí)行讀文件的操作時,從磁盤文件將數(shù)據(jù)先讀入內(nèi)存“緩沖區(qū)”,裝滿后再從內(nèi)存“緩沖區(qū)”依此讀出需要的數(shù)據(jù)。執(zhí)行寫文件的操作時,先將數(shù)據(jù)寫入內(nèi)存“緩沖區(qū)”,待內(nèi)存緩沖區(qū)”裝滿后再寫入文件。由此可以看出,內(nèi)存“緩沖區(qū)”的大小,影響著實際操作外存的次數(shù),內(nèi)存“緩沖區(qū)”越大,則操作外存的次數(shù)就少,執(zhí)行速度就快、效率高。一般來說,文件“緩沖區(qū)”的大小隨機器而定。fopen, fclose, fread, fwrite, fgetc, fgets. fputc, fputs, freopen, fseek. ftell, rewind等。

  2. 「非緩沖文件系統(tǒng)」

    緩沖文件系統(tǒng)是借助文件結(jié)構體指針來對文件進行管理,通過文件指針來對文件進行訪問,既可以讀寫字符、字符電、格式化數(shù)據(jù),也可以讀寫二進制數(shù)據(jù)。非緩沖文件系統(tǒng)依賴于操作系統(tǒng),通過操作系統(tǒng)的功能對文件進行讀寫,是系統(tǒng)級的輸入輸出,它不設文件結(jié)構體指針,只能讀寫二進制文件,但效率高、速度快,由于ANSI標準不再包括非緩沖文件系統(tǒng),因此建議大家最好不要選擇它.open,close, read, write, getc, getchar, putc, putchar等。

    一句話總結(jié)一下,就是open無緩沖,fopen有緩沖。前者與read,write等配合使用,后者與freadfwrite等配合使用

    使用fopen函數(shù),由于在用戶態(tài)下就有了緩沖,因此進行文件讀寫操作的時候就減少了用戶態(tài)和內(nèi)核態(tài)的切換(切換到內(nèi)核態(tài)調(diào)用還是需要調(diào)用系統(tǒng)調(diào)用API:read,write);而使用open函數(shù),在文件讀寫時則每次都需要進行內(nèi)核態(tài)和用戶態(tài)的切換;表現(xiàn)為,如果順序訪問文件,fopen系列的函數(shù)要比直接調(diào)用open系列的函數(shù)快;如果隨機訪問文件則相反。這樣一總結(jié)梳理,相信大家對于兩個函數(shù)及系列函數(shù)有了一個更全面清晰的認識,也應該知道在什么場合下使用什么樣的函數(shù)更合適 效率更高。

2. fopen(); fwrite(); fread(); 方式寫入數(shù)據(jù)

==FILE ?*「fopen」 ?(const char *path ,const char *mode);==
參數(shù)說明:path :路徑 ? mode ?:用什么方式打開 返回值:FILE 類型

mode 打開模式:

模式指令功能說明
r只讀方式打開一個文本文件
rb只讀方式打開一個二進制文件
w只寫方式打開一個文本文件
wb只寫方式打開一個二進制文件
a追加方式打開一個文本文件
ab追加方式打開一個二進制文件
r+可讀可寫方式打開一個文本文件
rb+可讀可寫方式打開一個二進制文件
w+可讀可寫方式創(chuàng)建一個文本文件
wb+讀可寫方式生成一個二進制文件
a+可讀可寫追加方式打開一個文本文件
ab+可讀可寫方式追加一個二進制文件

「寫入:」==size_t ? 「fwrite」 ?(const void *ptr ?, size_t size ?, size_t nmemb ?, FILE *stream);==

  1. ptr ? ? 緩沖區(qū) 等同于(buf)

  2. size ?一個字符大?。╯izeof char) 3. nmemb ?個數(shù)
    4. stream (哪個文件) which file

「讀取:」==size_t ?「fread」 ?(const void *ptr ,size_t size ,size_t nmemb ,FILE *stream);==

「光標問題:」==int ?「fseek」 ?(FILE *stream ?, long offset ,int whence);==

「示例代碼:」

#include
#include

int?main()
{
FILE?*fp;
char?*str?=?"Refuel.CONG";
char?readBuf[128]={0};

fp?=?fopen("./CONG.txt","w+");???//可讀可寫方式創(chuàng)建一個文本文件?
fwrite(str?sizeof(char),strlen(str),fp);
//一次性寫一個char?寫str個字節(jié),到fp里
fseek(fp,0,SEEK_SET);
fread(readBuf,sizeof(char),strlen(str),fp);
//從fp里?一次讀一個char?讀str個?讀到readBuf里去
printf("read?data:%s\n",readBuf);
fclose(fp);
return?0;
}

也可改寫:fread (readBuf , ?sizeof(char) , ?* strlen(str) , 1 ?,fp);
//讀*strlen(str)個 ?讀 ?1 次

3. n_read 和 n_write 的返回值

「n_read 和 n_write 的返回值取決于第三個參數(shù)」==

int?n_fwrite?=?fwrite(str?sizeof(char)*strlen(str),1,fp);
int?n_fread?=?fread(str?sizeof(char)*strlen(str),1,fp);

printf("read=%d,write=%d\n",n_read,n_write);

結(jié)果:n_read= 1 n_write =1

4. n_fread 和 n_fwrite 返回值區(qū)別

?int?n_fread?=?fread(str?sizeof(char)*strlen(str),100,fp);
?printf("n_read=%d\n",n_read);

結(jié)果為 :n_read = 1

「但是如果寫100結(jié)果就會不同」

?int?n_fwrite?=?fwrite(str?sizeof(char)*strlen(str),100,fp);
?printf("n_write=%d\n",n_write);

結(jié)果為 :n_write= 100

5. 標準c庫寫入結(jié)構體到文件

「fwrite()寫入結(jié)構體代碼:」

#include
#include

struct?Test
{

????int??a;
????char?c;
};
int?main()
{
FILE?*fp;
struct?Test?data1?={1100,'a'};
struct?Test?data2;

fp?=?fopen("./CONG.txt","w+");???//可讀可寫方式創(chuàng)建一個文本文件?
int?n_fwrite?=?fwrite(&data?,?sizeof(stsuct?Test)?,1,?fp);

fseek(fp,0,SEEK_SET);
int?n_fread?=?fread(&data?,?sizeof(stsuct?Test)?,1,?fp);

printf("read?=%d,%s\n",data2.a,data2.c);
fclose(fp);
return?0;
}

結(jié)果:read = 1100 , a

6. fgetc(); ?fputc(); ?feof() 的使用方法;

==「讀字符函數(shù) :fgetc() 函數(shù)的用法」== 作用:從指定的文件中讀一個字符, 函數(shù)調(diào)用的形式為:char ch//字符變量 = fgetc(fp // 文件指針); 我們可以將讀取到的數(shù)據(jù)給到一個字符變量存儲。

  1. 「面對要讀取的數(shù)據(jù)繁多的情況,為了減少程序運行的時間復雜度」,要用到 ==「fgets();」==
  2. 「fgets();」 ?功能是從指定的文件讀取一個字符串到字符數(shù)組中。函數(shù)的調(diào)用形式為:fgets(字符數(shù)組名,n,文件指針); 參數(shù):n 為一個正整數(shù)。表示從文件中讀出的字符串不超過n-1個字符,在讀入的最后一個字符后加上字符串結(jié)束標志'0',說通俗易懂點就是讀多少?

  3. printf("%s\n",str);?//循環(huán)讀取所有數(shù)據(jù)?while(fgets(str?,100?,fp)){?
    //循環(huán)讀取所有數(shù)據(jù),直到fets讀到’\0‘
    ????printf("%s\n",str);?}?fclose(fp);?return?0?;?```

==「fputc() 函數(shù)的用法」==

int fputc(int c , FILE *stream); 功能:把 c 寫入 文件stream里

==「feof() 函數(shù)的用法」==

int ?feof (FILE *stream );作用:(「是否到尾巴的位置」):「測試在沒到達文件尾巴返回0,到達尾巴返回 非0」

「feof() 函數(shù)使用代碼:」

#include
#include

int?main(){
??FILE?*fp;
??int?i;
??char?c;
??fp?=?fopen("./test.txt",r);
??//沒到達文件尾巴返回0,到達尾巴返回非0
??while(!feof(fp)){??
??//沒到尾巴時返回0,取反?進入while??當?shù)竭_尾巴返回非0??取反=0?退出while
??????c=fgetc(fp);
??????printf("%c",c);
??}
??fclose(fp);
??return?0;
}

「fputc寫入文件代碼:」

#include
#include

int?main(){
??FILE?*fp;
??int?i;
??char?*str?="Refuel.CONG";
??int?len?=?sizeof(str);

??fp?=?fopen("./test.txt","w+");
??if(fp?==??NULL){
????printf("打開文件出現(xiàn)錯誤\n");
????exit(-1);
??}
??for(i=0;i?????fputc(*str,fp);
?????str++;
??}
??fclose(fp);
??return?0;
}

文件編程就到這里結(jié)束了?。。?/p>


文件編程就到這里結(jié)束了?。。?/p>

原文鏈接 https://blog.csdn.net/weixin_44278698/article/details/123581754?utm_source=app&app_version=5.2.1&code=app_1562916241&uLinkId=usr1mkqgl919blen

本公眾號全部博文已整理成一個目錄,請在公眾號里回復「m」獲取!

推薦閱讀:

為什么俄羅斯不怕芯片卡脖子?

驚!初中生也來卷了……

最近 Github 上爆火的 Chrome 生產(chǎn)力神器 Omni 是什么鬼?


5T技術資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復「1024」,即可免費獲取!

瀏覽 51
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 91丨九色丨熟女新版| wwwxxx18| 无码人妻丰满熟妇精品| 53岁露大奶熟女偷情贴吧| 日本色情视频网站| 成人免费区一区二区三区| 日韩高清在线| 婷婷在线观看视频| 一级a一级a爱片免费免免高潮 | 日本久久网站| 男人天堂视频在线观看| 91超碰在线播放| 嫩BBB搡BBBB搡BBBB-百度| 国产特黄视频| 18禁裸体美女| 亚洲精品乱码久久久久久按摩观| 操逼免费观看| 三级av在线| 夜夜狠狠躁日日躁| caopor在线| 91.www91成人影视在线观看91成人网址9| 女人18片毛片90分钟免费明星| 动漫人物插画动漫人物的视频软件| 人妻少妇被猛烈进入中文字幕| 日韩一级黄片| 在线观看无码视频| 一道本在线视频| 久久久久综合| 婷婷丁香五月激情| 91久久国产综合久| 丁香五月婷婷在线| 欧一美一色一伦一A片| 成人AV一区二区三区| 欧美国产综合在线| 成人H在线| 成年人免费公开视频| 翔田千里53歳在线播放| 人人操人人摸人人射| 中文字幕一区二区蜜桃| 日韩经典视频在线播放| 免费看黄片网站| 黄色片在线| 中文字幕久久无码| 一区二区三区无码在线观看| 成人爽a毛片一区二区免费| 国产色色色色| 国产一区二区成人久久919色| 美女福利在线| 青青草原无码| 三级国产AV| 偷拍亚洲天堂| 在线免费观看无码视频| 国产AV无| 2021国产视频| 一本无码中文字幕| 性爱一级片| 亚洲色操| 日本韩国无码视频| 五月天婷婷成人| 色撸撸在线视频| 蜜臀AV在线观看| 色草视频| 亚洲天堂中文| 麻豆秘在线观看国产| 国产精品人人人人| jzzijzzij亚洲成熟少妇在线观看 九色蝌蚪9l视频蝌蚪9l视频成人熟妇 | 一级欧美黑人大战白妞| 成人免费精品视频| 影音先锋久久久| 精品动漫一区二区三区| 久久国产免费视频| 国产女人18毛片水真多成人如厕| 久久无码在线观看| 婷婷国产视频| 男人的天堂免费视频| 亚洲欧洲日韩综合| 久久中文字幕视频| 欧美日韩亚洲综合| 亚洲精品一二三| 日韩中文字幕免费在线观看| 撒尿BBw搡BBwBBw| 亚洲成年视频| 99久久婷婷国产综合精品hsex | 亚洲中文无码在线| 欧美日本国产| 亚洲色图15p| 天天澡天天爽日日AV| 一线av| 婷婷色777777| 91爱爱com| 亚欧av无码| 无码精品黄色片| 大鸡吧成人视频| 污视频在线观看免费| 国产精品欧美综合亚洲| 97人人操人人干| 人人人人摸| 无码高清视频在线观看| 色欲AV秘无码一区二区三区| 91免费福利视频| 囯产精品一区二区三区AV做线| jlzzzjlzzz国产免费观看| 国内精品内射| 91精品久久久久久久久久| 欧美在线视频一区| 在线你懂得| 插菊花综合网3| 又紧又嫩又爽无遮挡免费| 久久天堂网| 亚洲国产91| 日韩性爱在线| 亚洲操逼无码| 日日碰狠狠躁久久躁婷婷| 91在线无码精品入口电车| 国产亚洲精品久久久波多野结衣| 免费A片在线看| 97人人干人人| 爱操综合| av在线直播| 免费观看黄色AV| 国产主播专区| 精品视频网站| 国产一级a一片成人AV| 久久婷婷国产综合| 中文字幕无码成人| 毛片中文字幕| 欧美香蕉视频| 欧美黄色免费观看| 国产在线导航| 天天撸在线视频| 91精品婷婷国产综合久久竹菊| 亚洲成人国产| 一区二区三区久久久| 天天干天天干天天干| 国产无码AV大片| 神马午夜av| 亚洲人妻电影一区| 黄色大片网站| 日韩18禁| 四川少妇搡bbbbb搡多人| 91欧美日韩| AV在线资源| 三级AV在线免费观看| 久久久亚洲AV| 亚洲AV片一区二区三区| 亚洲小骚逼| 日韩少妇无码| 中文字幕一区二区三区在线观看| 国产剧情一区二区| 中文字幕+乱码+中文乱码视频在线观看| 欧美综合亚洲| 国产麻豆三级片| 无码AV一区二区| 国产三级片视频| 奶头和荫蒂添的好舒服囗交漫画 | 一级特黄大片色| 亚洲天堂免费| 蜜桃视频在线观看18| 亚洲精品色色| 中文字幕第27页| 五月黄色电影| 69pao| 操逼影视| 亚洲乱妇| 久久国产精品在线| 亚洲午夜成人精品一区二区| 亚州天堂网| 国产欧美综合一区二区三区| 青青草手机视频| 欧美大吊在线| 免费观看一级黄片| 91黄色视频在线播放| 国产视频福利在线| 国产熟女乱伦视频| gogogo高清在线观看免费直播中国 | 欧美一级黄片免费看| 亚洲精品黄色电影| 2021天天操| 人人操人人干人人爽| 国产乱码一区二区三区四区在线| 久久久久久久久久国产精品免费观看-百度 | 中文一区二区| 肉色超薄丝袜脚交一区二区| 激情丁香五月婷婷| 欧一美一色一伦一A片| 亚洲性爱中文字幕| 插进去综合图| 一区二区国产视频| 午夜综合网| 亚洲AV无码乱码精| 色人天堂| 色呦呦在线| 无码123| 亚洲小说图片AV在线| 91成人在线影院| 国产色色网| 黄色一及片| 久久久九九九| 婷婷激情五月天丁香| 黄片视频在线免费看| 一级中国毛片| 在线无码一区| 欧美精品18videosex性欧美| 亚洲精品成人AV| 国产va在线| 色婷婷18| 欧美久久国产精品| 青青草原国产视频| 热久久9| 欧美日本在线| 三级片在线观看网站| 国产精品人妻无码久久久郑州天气网| 精品孕妇孕交无码专区| 青娱乐自拍视频| 三上悠亚一区二区| 中文字幕无码观看| 嫩BBB槡BBBB槡BBBB撒尿| 操逼免费| 黄网站欧美内射| 亚洲A片电影| 中文字幕无码高清| 日韩综合色视频导航| 色色色色AV| 俺来操| 色九九九| 91丨露脸丨熟女精品| 欧美日韩中文字幕视频| 激情小视频| 91精品在线播放| 欧美熟妇擦BBBB擦BBBB| 精品五月天| 国产人妖在线| 欧美日韩高清一区| 色老板在线观看视频| 亚洲黄视频| 成人区123| 亚洲日皮| 在线免费毛片| 黄色视频| 人成在线观看| 欧美成人激情视频| 青娱乐AV| 肏逼网| 成人无码高清在线观看| 欧美精品乱码99久久蜜桃| 中文字幕23页| 91在线精品视频| 小小拗女BBw搡BBBB搡| 日韩黄网站| 强辱丰满人妻HD中文字幕| 天堂A片电影网站在线观看| 欧美三级视频在线| 美女福利在线| 91精品久久久久久久| 亚洲欧美婷婷五月色综合| 成人无码精品亚洲| 婷婷在线综合| 上海熟妇搡BBBB搡BBBB| 日韩一区二区三区四区久久久精品有吗| 国产成人精品一区二区三区视频 | 亚洲福利在线免费观看| 91在线无码精品秘入口男同| 久久精品福利视频| 正在播放无码| 国产无套进入免费| 伊人久久大| 操欧美女人| 不卡a12| 在线播放内射| 新妺妺窝窝777777野外| 天天操网站| 天天天天天天天天干| 九一久色| 日韩不卡一区二区三区| 日韩毛片大全| 五月丁香性爱| 久久天天操| 国产视频99| 悠悠色综合| 日韩精品人妻中文字幕蜜乳| 国产女人18毛片水真多18| 中日韩特黄A片免费视频| 肏屄视频免费观看| 操逼亚洲| 中文字幕免费高清在线观看| 国产91人| 在线aaa| 日韩高清无码免费| 特级西西444www高清| 久久欧洲成人精品无码区| 国产一级片免费| 男女无码| 伊人网视频在线播放| 色天使av| 一级a片激情啪啪免费观| 成人免费A片在线观看直播96| 熟女人妻人妻HD| 精品免费黄色视频| 人人澡人人爽| 日韩中文性受视频| 成人精品秘免费波多野结衣| 亚洲AV成人无码| 亚洲色婷婷在线| 综合色区| 日韩欧美国产黄色电影| JlZZJLZZ亚洲美女18| AV在线资源| 免费版成人久久幺| 特级444WWW大胆高清| 欧美试看| 国产精品午夜成人免费| AV在线小说| 欧美在线黄片| 在线中文字幕在线观看| 亚洲免费观看高清完整版在线观 | 人人干人人操人人爱| 高清无码网址| 懂色av| 婷婷国产精品视频| 欧美成人网站在线观看| 国产午夜精品一区二区三区嫩A| 乌克兰毛片| 日韩在线视频二区| 国产无码区| 国产色自拍| 深爱五月激情| 日本黄色的视频| 可以免费观看的av| 美国无码黄片| 伊人综合视频| 男女操逼免费观看| 国产成人精品一区二| 国产成人在线视频| 五月丁香婷婷色色| 免费AV网站| aaaaaa在线观看免费高清| 国产成人久久| 老太婆擦BBBB撩BBBB| 欧美A级视频| www.污污污| 国产第二页| 操逼视频高清无码| 日韩黄色毛片| 国产嘿嘿| 色网在线观看| 波多野结衣一级| 国产你懂的| 大香蕉黄色片| 无码在线免费观看| 日韩一区在线播放| 国产在线不卡年轻点的| 国产成人黄色| 搡BBBB搡BBB搡五十粉嫩| eeuss一区二区| AA黄色电影| 五月婷婷无码| 日皮视频网站| 五月丁香婷婷在线| 超碰日日夜夜| 国产一区二区三区免费视频| 亚洲成人h| 国产丨熟女丨国产熟女视频| 国产三级性爱视频| 69成人网| 我爱大香蕉| 青青在线| 婷婷五月欧美| 最新av资源| 欧美啪啪啪| 精品交换一区二区三区无码| 亚洲一区AV| 特黄特色免费视频| 国产天堂在线| 黄色在线播放| 999精品视频| 亚洲综合中文字幕在线| 性爱网站免费看| 久久久黄色视频| 91白丝在线观看| 91久久久久久久| 北条麻妃九九九在线视频| 欧美操操| 欧美操逼在线观看| 免费超碰| 日韩中文字幕网站| 免费观看高清无码视频| 大香蕉操逼网| 色播视频在线观看| 中文字幕乱码亚洲无线码在线日噜噜 | 亚洲熟妇在线观看| a国产| 99久re热视频精品98| 九九99电影| 日日干日日干| 好爽~要尿了~要喷了~同桌 | 91人人草| 天天透天天干| 操逼视频大全| 视色视频在线观看18| 国产成人一级| 欧美日比视频| 亚洲一区亚洲二区| 伊人成人在线观看| 国产精品久久久999| 欧美偷拍一区二区| 欧美日韩一区在线| 91一起草高清资源| 大香蕉一区二区| 国产精品揄拍500视频| 开心色播五月| 操b在线观看| 中文字幕乱码无码人妻系列蜜桃 | 人操人操人操| 久久中文字幕综合| 99免费观看视频| 国产女人十八水真多| 国产精品一区在线观看| sm在线观看| 久久午夜无码鲁丝午夜精品| 丁香五月AV| 黄页av| 91大神在线资源观看无广告| 操bbbb| 国产精品人妻无码久久久郑州天气网 | 亚洲三级在线观看| 中文字幕av一区二区| 久久黄片视频| 久久婷婷视频| 一区二区三区免费在线观看| 亚洲日韩AV电影| www.婷婷五月天| 河南熟妇搡BBBB搡BBBB| 亚洲性爱综合| 亚洲精品高清无码| 成人性爱视频在线播放| 中文字幕日韩无码片| 婷婷99狠狠躁天天躁| 国产区在线| 久久国产精品影院| h片在线| 河南熟妇搡BBBB搡BBBB| 亚洲精品另类| 日本A片在线观看| 日本欧美在线播放中文| 久久九九国产精品怡红院| 无码高清一区二区| 国产免费av片| 亚洲中文字幕第一| 亚洲成人高清| 中文字幕福利视频| 91无码一区二区| 伊人在线视频| 国产日本在线| 男人手机天堂| 午夜做爱福利视频| 美女黄色视频网站| 99操逼网| 国产精品成人3p一区二区三区| 亚洲精品在线视频| 欧美激情视频一区二区| 日本天堂网站| 乱伦五月天| 亚洲AV无码一区东京热久久| 性爱视频99| 日韩欧美在线中文| 国产欧美日本| 三级片网站在线观看| 中国免费毛片| 香蕉成人网| 在线看国产| 黄色永久免费| A级片黄色片| 成人无码一区二区| 国产黄色视频在线观看免费| 国产真人无码| 亚洲乱伦| 国产成人av在线| 婷婷操逼网| 成人黄色在线观看视频| 超碰精品| 爱爱视频欧美| 大鸡巴久久久久久久| 免费操逼网址| 中文字幕福利| 少妇高潮喷水| 天天色粽合合合合合合合| A级片黄色片| 日韩乱伦视频| 无码一区二区三区四区五区六区 | 东北女人操逼视频| 久久综合无码内射国产| 女人自慰网站在线观看| 99久久婷婷国产综合精品草原| 豆花视频免费观看| 色播视频在线观看| 亚洲中文字幕人妻。| 亚洲资源在线观看| 69pao| 免费在线观看A| 毛片av在线| 国产熟妇搡BBBB搡BBBB毛片 | 亚洲操逼网| 正在播放JUQ-878木下凛凛子 | 99成人电影| 在线免费观看黄色| 狠狠躁夜夜躁人爽| 91丨九色丨蝌蚪丨丝袜| 亚洲成人黄色视频| AV三级片网站| 3D动漫精品啪啪一区二区免费| 亚洲秘无码一区二区三区蜜桃中文 | 成人小说一区二区三区| www在线播放| 91精品国产人妻| 蜜桃视频网| 高清无码在线免费| 日韩AV无码一区二区三区| 你懂得视频| 国产a一级a毛一级视频| 国产无码一区| 亚洲黄色在线视频| 免费的av网站| 91x色| 一区二区三区小视频| 成人黄色网| 国产又粗又长的视频| 亚洲日韩免费观看| 综合色色婷婷| AV观看免费| www.天天射视频| 亚洲精品自拍| www.av91| 久久久久久久97| 四季AV之日韩人妻无码| 中文字幕H| 久久夜色精品噜噜亚洲AV| 欧洲一级片| 无码免费一区| 色噜噜狠狠一区二区三区牛牛影视 | 狼友视频免费观看| www.大吊视频| 苍井空无码| 天美精东蜜桃91| 精品无码久久久| 中文四区| 国产91高跟丝袜| 五月天色色小说| 在线观看中文字幕| 国产欧美日韩在线观看| 丰满人妻一区二区三区精品高 | 国产精品毛片视频| 国产一级黄色大片| 久草视频免费在线播放| 在线观看av网站中文字幕 | 热无码av| 无码一级| 手机免费av| 国产ww| 亚洲AV无码精品成人| 亚洲无码一卡二卡| 色婷久久| 日韩操比视频| 丁香五月亚洲综合| 午夜一级性爱片| 91成人亚洲| 91av免费观看| 日本视频一区二区三区| 99九九热| 天天日天天色天天干| 91官网在线观看| 国产一毛a一毛a在线观看| 肉片无遮挡一区二区三区免费观看视频 | 99色在线| 福利精品| 国产精品久久久999| 天天操比| 激情白浆| 韩国成人免费无码免费视频| 在线成人视频网站大香蕉在线网站| 精品人妻一二三区| 青青草手机在线视频| 最新国产AV| 91禁樱桃在线| 依人综合网| 国产无码黄片| 国产久久久久久久久| 国产18水真多18精品| 国产三级片网址| 韩国一级av| 精品国产精品| 午夜福利成人网站| 亚洲网站免费观看| 一本一道波多野结衣潮喷视频| 岛国AV在线| 欧美1区| 在线国产小视频| 日本特级黄A片免费观看| 亚洲精品A| 91狠狠色丁香婷婷综合久久精品 | 久久精品性爱| 91探花精品偷拍在线播放| 91爱爱| 水蜜桃网站| 91欧美日韩| 亚洲高清免费视频| 亚洲成人A片| 日韩精品成人电影| 人人妻人人爽人人澡人人精品| www.精品视频| 天堂а√在线中文在线新版 | 俺来俺也去www色在线观看| 91麻花| 骚逼www| 亚洲男人av| 精品日韩AV| 麻豆天美蜜桃91| 96精品久久久久久久久久| 免费看A级片| 久久久中文字幕| 鲁一鲁视频| 中文免费高清在线观看视频| 懂色中文字幕| 亚洲天堂在线播放| 免费操逼网站| 肏屄视频在线观看| 高清无码黄片| 亚洲AV成人片无码网站| 亚洲色图图片| 国产高清无码视频在线观看| 六月婷婷综合| 青青草免费公开视频| 超碰在线人人操| 婷婷色小说| 黄频在线观看| 成人av免费在线观看| 久操视频在线免费观看| 国产成人AV在线播放| 99热免费观看| 亚洲无码专区在线观看| 日本亚洲黄色视频| 丰满老妇高潮一级A片| 奇米色五月| ThePorn日本无码| 尹人成人| 99热这里只有精品1| 男女啪啪网| 中文字幕亚洲一区| 国产成人无码永久免费| 欧美精品久久久久| 日韩啪啪视频| www.色五月| 性爱视频免费网站| 欧美精品秘一区二区三区蜜臀| 欧美自拍偷拍| 亚洲激情网| 91你懂的| 欧美成人综合| 中文字幕免费视频| 国产成人av| 亚洲福利影院| 一级A片视频免费看| 日日操天天操夜夜操| 亚洲欧美手机在线| 尤物av在线| 永久免费黄色视频网站| 午夜一级| 久草在在线| 91亚洲国产精品| 国内自拍视频网站| 精品无码一区二区三区蜜桃李宗瑞 | 黑人精品欧美一区二区蜜桃| 亚洲成人视频免费在线观看| 成人国产在线无码AV免费| 午夜精东影业传媒在线观看| 成人超碰| 国产成人无码免费看片| 少妇搡BBBB搡BBB搡视频一级| 91在线导航| 爱爱视频日本| 亚洲日韩电影| 精品久久久久久久| 国产操逼免费| 午夜福利电影无码| 人妻在线无码| 成人精品亚洲人成在线| 波多野结衣无码网站| 中字AV| 色色色色综合| 国产一级a毛一级a毛视频在线网站)| sm在线观看| 日韩人妻无码一区二区三区| 人人妻人人爱人人操| 亚洲欧美在线观看视频| 操逼视频国产| 人人摸人人搞| 在线观看高清无码中文字幕| 学生妹作爱片| 国产免费AV片在线无码| 波多野结衣无码一区| 天天躁夜夜躁av| 一级黄影| 日韩三级成人| 91在线无码精品秘蜜桃入口| 亚洲sese| 国产激情AV| 亚洲第一网无码性色| 日本三级黄色视频| 青娱乐成人在线视频| 无码人妻蜜桃| 骚逼影视| a级毛片在线观看| 欧美午夜在线| 伊人久久大| 黄色大片免费看| 亚洲日韩乱码在线| 人人摸人人操人人爽| 18性XXXXX性猛交| 草草影院CCYYCOM屁屁影院合集限制影院 | 欧美日韩国产性爱| 日韩无码AV一区二区| 成人AV中文解说水果派| 女人的天堂av| 亚洲高清中文字幕| 婷婷深爱五月丁香网| 亚洲AV中文在线| 国产乱叫456在线| 欧美色逼逼| 成年女人免费视频| 日韩无码首页| 大鸡巴导航| 久久人搡人人玩人妻精AV香蕉| 插入综合网| 十八无码成人免费网站| 亚洲精品一区二区三区无码电影| 欧美性爱天天操| 国产91精品看黄网站在线观看| 91视频一区二区三区| 一插菊花综合网| 无码成人毛片| 2018天天日天天操| 午夜天堂精品久久久| 亚洲国产爱| 在线观看黄网| 五月天黄色视频| 亚洲wwwwww| 国产无码自拍偷拍| 黄色视频a| 亚洲专区中文字幕| 天天干天天操天天干| 欧美三级网站| 人人爽爽人人| 色狠久| 欧美V∧| 国产亚洲中文字幕| 亚洲无码激情| 国产粉嫩小泬白浆18p| 亚洲视频在线观| 一级黄色录像视频| 深爱五月激情网| 韩国无码免费| 精品一区二区三区四区| 尤物av在线| 一级二级三级毛片| 国产色情视频在线观看| 韩国无码一区二区三区| 2025精品偷拍视频| 免费看a的网站| 色999亚洲人成色| 亚洲视频欧美视频| 日韩久久免费视频| www.狠狠操| 欧美视频综合网| 亚洲中文中出| 五月婷婷六月丁香综合| 西西人体大胆ww4444| 91成人做爰A片| 大香蕉精品一区| 亚洲人成人无码.www粉色| 日本免费不卡| 亚洲精品蜜桃| 一区二区三区操逼| 91亚洲日韩| 18国产免费视频在线观看| 国产高清成人| 天堂网2018| 国产av一区二区三区| 色婷婷大香蕉| 久久综合伊人777777| 天天做天天爱天天高潮| a级片在线观看| 国产伊人在线| 狠狠狠狠操| 另类老妇性BBBWBBW| 国产一精品一aⅴ一免费| 四虎成人无码A片观看| av大全在线观看| 国产午夜激情| 狠狠色噜噜狠狠狠7777米奇网| 欧美性交网| 中文字幕一区二区三区四区五区六区 | 亚洲色伦| 欧亚免费视频| 中文字幕一区二区6页| 国产精品久久久久久久久久| 日韩精品黄片| 亚洲欧美成人在线视频| 毛多水多丰满女人A片| 人人摸人人草| 中文字幕av网站| 免费成人视频| 奇米色色色| 人人操在线公开| 欧美日韩综合网| 波多野结衣视频一区| 国产ts在线| 人人操人人摸人人射| 晚上碰视频| 久久aaa| 成人黄色在线| 在线观看不卡av| 亚洲性爱视频| 有码在线| 色99在线视频| 亚洲无码高清在线视频| 久久噜噜噜精品国产亚洲综合| 日本免费黄色| 最新亚洲中文字幕| 蜜桃毛片| 黑人操逼视频| 亚洲AAA电影| 三级网址在线| 亚洲精品无码久久久| 国产欧美综合视频一区二区在线| 欧美一级A片在免费看| 中文字幕一区二区二三区四区| 四川少妇搡BBBB搡BBB视频网| 91丨豆花丨国产极品| 免费在线观看视频黄| 亚洲精品日韩无码| 四虎影院中文字幕| 国产精品久久久久久无人区| 日韩精品成人无码免费| 亚洲品久久久蜜| 中文亚洲视频| 伊人久久中文字幕| 黑人无码| 欧产日产国产swag| 日本AⅤ在线观看| 成人视频网| 996热re视频精品视频| 草逼国产| 五月丁香六月| 色婷婷狠狠操| 天天操夜操| 丁香五月天堂网| 你懂得视频在线观看| 美女久久| 在线观看A片| 男人天堂资源网| 色欲无码| 午夜乱伦| 中文字幕国产一区| 91小视频在线观看| 免费无码视频一区二区| 性爱91视频| 亚洲视频中文| 亚洲无码电影视频| 一级黄色视频免费观看| 91久久综合亚洲鲁鲁五月天| 天天操天天谢| 嫩草久久99www亚洲红桃| 色男人色天堂| 青青热久| 成人精品视频在线| 青草福利视频| 国产对白视频| 日本内射网站| 一道本一区二区三区免费视频| 日韩高清成人无码| 欧美精品网站| 亚洲色情在线播放| 久久久久久久久久成人永久免费视频| 午夜无码电影| 无码视频一二三区| 亚洲无码观看视频| 亚洲视频中文字幕| 中文无码一区二区三区四区| 欧美级毛片一夜| 中文字幕播放| 一级黄色免费看| 中文无码在线播放| 日韩黄色免费网站| 超级人人操| 亚洲s在线| 四川BBB搡BBB爽爽爽电影| 日韩无码小电影| 山东乱子伦视频国产| 久久精品夜色噜噜亚洲A∨| 亚洲不卡| 超碰天堂|