集训第一天所学
第一天我們主要學(xué)習(xí)了文件編程的相關(guān)知識(shí)
1.不帶緩存的(系統(tǒng)調(diào)用)-文件訪問(wèn):
主要學(xué)習(xí)了open,read,write,lseek函數(shù)的運(yùn)用。
2.帶緩存的(庫(kù)函數(shù))- 文件訪問(wèn)
主要學(xué)習(xí)了fopen,fread,fwrite,fseek.
3.不帶緩存的I/O對(duì)是文件描述符操作,帶緩存的I/O是針對(duì)流的。
標(biāo)準(zhǔn)I/O庫(kù)就是帶緩存的I/O,它由ANSI C標(biāo)準(zhǔn)說(shuō)明。當(dāng)然,標(biāo)準(zhǔn)I/O最終都會(huì)調(diào)用上面的I/O例程。
標(biāo)準(zhǔn)I/O庫(kù)代替用戶處理很多細(xì)節(jié),比如緩存分配、以優(yōu)化長(zhǎng)度執(zhí)行I/O等。
4.對(duì)于lseek成功返回返回移動(dòng)后指針距離文件開(kāi)頭的長(zhǎng)度,對(duì)于fseek成功返回0.
之后我們講了測(cè)試了不帶緩存與帶緩存下文件的長(zhǎng)度,代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int length;
}
5.然后我們還講了不帶緩存下實(shí)現(xiàn)一個(gè)文件到另外一個(gè)文件的拷貝,代碼如下:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int fd;
char buf[32] = {0};
//int ret;
ssize_t ret;
}
6.void perror(const char *s); perror (“open_port”);
包含頭文件(不可以掉了這個(gè)頭文件):
#include <stdio.h>//包含perror的頭文件
函數(shù)說(shuō)明
perror ( )用 來(lái) 將 上 一 個(gè) 函 數(shù) 發(fā) 生 錯(cuò) 誤 的 原 因 輸 出 到 標(biāo) 準(zhǔn) 設(shè)備 (stderr) 。參數(shù) s 所指的字符串會(huì)先打印出,后面再加上錯(cuò)誤原因字符串。此錯(cuò)誤原因依照全局變量error 的值來(lái)決定要輸出的字符串。在庫(kù)函數(shù)中有個(gè)error變量,每個(gè)error值對(duì)應(yīng)著以字符串表示的錯(cuò)誤類(lèi)型。當(dāng)你調(diào)用"某些"函數(shù)出錯(cuò)時(shí),該函數(shù)已經(jīng)重新設(shè)置了error的值。perror函數(shù)只是將你輸入的一些信息和現(xiàn)在的error所對(duì)應(yīng)的錯(cuò)誤一起輸出。
7. man后參數(shù)(數(shù)字或者字母)作用介紹
8.man后面參數(shù)(數(shù)字或者字母)作用
1是普通的命令
2是系統(tǒng)調(diào)用,如open,write之類(lèi)的(通過(guò)這個(gè),至少可以很方便的查到調(diào)用這個(gè)函數(shù),需要加什么頭文件)
3是庫(kù)函數(shù),如printf,fread
4是特殊文件,也就是/dev下的各種設(shè)備文件
5是指文件的格式,比如passwd,就會(huì)說(shuō)明這個(gè)文件中各個(gè)字段的含義
6是給游戲留的,由各個(gè)游戲自己定義
7是附件還有一些變量,比如向environ這種全局變量在這里就有說(shuō)明
8是系統(tǒng)管理用的命令,這些命令只能由root使用,如ifconfig
n新文檔,可能要移到更適合的領(lǐng)域。
o老文檔,可能會(huì)在一段期限內(nèi)保留。
l本地文檔,與本特定系統(tǒng)有關(guān)的。
之后我發(fā)現(xiàn)自己對(duì)于函數(shù)用法還掌握的不熟練,應(yīng)勤加記憶。
收獲:
(1)我發(fā)現(xiàn)緩存區(qū)到磁盤(pán)實(shí)現(xiàn)的都是write操作,
反之磁盤(pán)到緩沖區(qū)則是read操作,且緩沖區(qū)屬于內(nèi)存,兩個(gè)操作都是在內(nèi)存和磁盤(pán)間操作。
(2)read函數(shù)讀完數(shù)據(jù)后值為0,但也可以是所讀完的數(shù)據(jù)的長(zhǎng)度。
自我評(píng)價(jià):多敲代碼,上課多做筆記。
總結(jié)
- 上一篇: 单链表之无头和有头--逆序
- 下一篇: 集训2--进程控制理论