您好,登錄后才能下訂單哦!
標(biāo)準(zhǔn)I/O操作:
1、FILE* fopen(const char* path, const char* mode)
FILE :文件打開的各種狀態(tài)信息的指針;
path: 文件路徑;注意,目錄文件只能以只讀形式打開,不能進(jìn)行寫;
mode: 文件打開的模式: “r”(只讀,且文件必須存在),“w”(只寫,如果文件不存在,則創(chuàng)建,如果已經(jīng)存在,則將其長度截?cái)酁?,從頭寫),“a”(表示追加數(shù)據(jù)到末尾,如果文件不存在,則創(chuàng)建),“r+”,“w+”,“a+”;
2、int fgetc(FILE *stream) 從文件或終端中讀取一個(gè)字節(jié)返回,本來應(yīng)該返回uchar類型,但是函數(shù)原型的返回值是int型,所以要轉(zhuǎn)化為擴(kuò)展為int型的;這個(gè)函數(shù)既可以從終端讀,也可以從文件中讀;
3、int getchar(void) 從終端(只能從終端)中讀取一個(gè)字節(jié),返回時(shí)擴(kuò)展為int型,原因同上;
4、int fputc(int c,FILE* stream);int putchar(int c); 為寫入函數(shù),寫入是文件必須是可寫的;
5、int fseek(FILE* stream, long offset ,int whence) 用于設(shè)置讀寫指針偏移,返回相對(duì)于文件起始位置的偏移量大??;
6、int ftell(FILE *stream) 用于返回當(dāng)前讀寫指針的位置;
7、void rewind(FILE *stream) 用于讀寫指針移動(dòng)到文件的起始位置;
8、char* gets(char *s)從標(biāo)準(zhǔn)輸入一行保存在緩沖區(qū),但是永遠(yuǎn)不要用這個(gè)函數(shù);因?yàn)槲粗付ň彺鎱^(qū)的大小,所以很容易產(chǎn)生緩沖區(qū)溢出,造成錯(cuò)誤;
9、char* fgets(char *s, int size, FILE* stream) 表示從指定的文件中讀取一行,到用戶指定的緩沖區(qū);返回的指針是指針s移動(dòng)后的位置;
注意: fgets()只適用于讀不含‘\0’的文本文件,因?yàn)閒gets()會(huì)自動(dòng)在末尾加‘\0’,但是,如果用戶在輸入中也輸入‘\0’,那么就無法識(shí)別是fgets自己加的,還是用戶加的;另外,由于’\0‘的ASIIC 是0x00,所以在不能讀二進(jìn)制文件;
10、int fputs(const char *s, FILE* stream); 將字符串寫入到文件中,不含末尾的’\0‘;
int puts(const char* s); 將字符串寫入到標(biāo)準(zhǔn)輸入中;
11、對(duì)文件進(jìn)行的任何操作,都要先明白讀寫指針在什么地方,這個(gè)決定了你讀寫的位置;
12、fread(void *str, size_t size, size_t nmemb, FILE* stream) 從文件stream 中讀取nmemb 個(gè)大小為size字節(jié)大小的數(shù)據(jù)到 str;
fwrite(void *str, size_t size, size_t nmemb, FILE* stream) 同上,是寫入文件;
13、全緩沖:等待緩沖區(qū)寫滿以后,才寫入內(nèi)核;常規(guī)文件用此方式;
行緩沖:等待有換行符的時(shí)候,就寫入內(nèi)核;標(biāo)準(zhǔn)輸入輸出用這種方式;
不帶緩沖:用戶每次寫操作都要調(diào)用系統(tǒng)調(diào)用,寫入內(nèi)核;
int fflush(FILE* stream) 用于將緩沖區(qū)的數(shù)據(jù)立即寫入內(nèi)核;成功返回0;
14、標(biāo)準(zhǔn)文件流:FILE: stdin ,stdout, stderr;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。