2、字元類別測試:
標頭檔案中定義的輸入和輸出函式、型別以及巨集的數目幾乎佔整個標準庫的1/3。
流,stream,是與磁碟或其他外圍裝置關聯的資料的源或目的地。
「後3種方式在讀和寫的交叉過程中,必須呼叫fflush函式或檔案定位函式。」
int
fflush
(file* stream)
;//重新整理流 stream 的輸出緩衝區
fflush()會強迫將緩衝區內的資料寫回引數stream 指定的檔案中,fflush(stdout)會清空stdout的緩衝區。
然後有「
stdout通常跟終端相連,通過描述符1。 如果在執行之前被重定向到非終端,那麼printf會進行全緩衝,否則對一行緩衝」。具體而言:
#include
#include
intmain()
return(0);}
如上所示,012會每隔1s被列印出來,而將fflush注釋掉後,則是等待3s之後才全部列印出來。所以說,就是把緩衝區的內容推到stdout中(因此會及時列印出來),然後將其清除,或者說重新整理。emmm,稍微懂一點了。
int
fgetc
(file *stream)
//返回stream流的下乙個字元,返回型別為unsigned char;錯誤返回eof
intfputc
(int c, file *stream)
//把c**換為unsigned char型別)輸出到流stream中,返回寫入的字元,錯誤返回eof
intgetc
(file *stream)
//等價於fgetc
intgetchar
(void
)//等價於getc(stdin)
intputc
(int c, file *stream)
//等價於fputc
intputchar
(int c)
//等價於putc(c, stdout)
intungetc
(int c, file *stream)
//把c**換為unsigned char型別)寫回到流stream中,返回被寫回的字元,錯誤返回eof
然後是比較,嗯,有特點的4個:
//最多讀入n-1個字元。遇到換行符時,將其讀入到陣列s中,讀取過程終止。陣列s以'\0'結尾
char
*fgets
(char
*s,int n, file *stream)
//返回陣列s,到達檔案末尾或發生錯誤返回null
//把s(不包含字元'\n')輸出到流stream中
intfputs
(const
char
*s, file *stream)
//返回乙個非負值,出錯返回eof
//把下乙個輸入行讀入到s中,把末尾換行符替換為字元'\0'
char
*gets
(char
*s)//返回陣列s,到達檔案末尾或發生錯誤返回null
//把s和乙個換行符輸出到stdout中
intputs
(const
char
*s)//返回乙個非負值,出錯返回eof
可以看到它們對最後的換行符的處理,同名的,帶f和不帶f剛好相反,帶/不帶f的也相反。
小插曲:由於gets()不檢查目標陣列是否能夠容納輸入,所以很不安全。的確,幾年前就有人注意到 nuix作業系統中**使用gets(),於是他們利用這個弱點,用很長的輸入覆蓋作業系統的** ,從而發明了在unix網路上傳播的「蠕蟲(worm)」。
//origin取值為seek_set、seek_cur、seek_end
intfseek
(file *stream,
long offset,
int origin)
//出錯返回非0值
long
ftell
(file *stream)
//返回stream流的當前檔案位置,出錯返回-1l
void
rewind
(file *stream)
//rewind(fp)等價於 fseek(fp, 0l, seek_set);clearerr(fp);見下一節
intfgetpos
(file *stream, fpos_t *ptr)
intfsetpos
(file *stream,
const fpos_t *ptr)
「整形表示式errno(在中宣告)可以包含乙個錯誤編號,據此可以進一步了解最近一次出錯的資訊。」
void
clearerr
(file *stream)
//清除與流stream相關的檔案結束符或錯誤指示符(錯誤標誌一旦出現,就一直保留,影響後續檔案的操作)
intfeof
(file *stream)
//如果設定了與stream相關的檔案結束指示符,則返回非0值
intferror
(file *stream)
//發現錯誤,返回乙個非0值
void
perror
(const
char
*s)//列印s以及與errno中整型值相應的錯誤資訊,類似於fprintf(stderr, "%s: %s\n", s, "error message");
好像就這麼乙個巨集
C語言 附錄001 常用函式庫
c語言 附錄001 常用函式庫 2020 3 4 函式庫作用 include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 include 定義各種資料...
C語言標準庫
ctype.h是c標準函式庫中的標頭檔案 定義了一批c語言字元 分類函式 c character classification functions 用於測試字元是否屬於特定的字元類別,如字母字元 控制字元等等 ctype.h的c標準庫的標頭檔案中提供的宣告幾個有用的函式測試和字元對映。yiibai....
c語言標準庫
c 標準庫的 assert.h標頭檔案提供了乙個名為 assert 的巨集,它可用於驗證程式做出的假設,並在假設為假時輸出診斷訊息。c 標準庫的 ctype.h 標頭檔案提供了一些函式,可用於測試和對映字元。這些函式接受 int 作為引數,它的值必須是 eof 或表示為乙個無符號字元。如果引數 c ...