C陷阱與缺陷 第五章 庫函式

2021-09-19 14:53:28 字數 865 閱讀 9811

有關庫函式的使用,最好的建議是盡量使用系統標頭檔案。因為標頭檔案中包括了庫函式的引數型別和返回型別的宣告。

5.1 返回整數的getchar的函式

#include

main()

getchar函式一般的情況下返回的是標準輸入檔案中的下乙個字元,當沒有輸入時,返回eof。但由於 c 宣告成了char 型別,而不是int 型別,這意味著c 不能夠容納所有的可能的字元,特別是不能容納eof。兩種可能的結果是:(1)某些合法的輸入字元在被「截斷」後使得 c 的取值與eof相同;(2)c 根本不可能取得eof這個值;對於前一種情況,程式將在中途終止,後一種情況,程式陷入死迴圈。

5.2更新順序檔案

file *fp;

struct record rec;

……while(fread((char )&rec,sizeof(rec),1,fp)==1)//位址&rec被轉換為字元指標

}5.3緩衝輸出和記憶體分配

程式輸出兩種方式:(1)即使處理方式;(2)先暫存起來,然後再大塊寫入的方式,前者往往可以造成較高的系統負擔。

c語言使用庫函式setbuf 實現對輸出資料量的控制。如果buf 是乙個大小適當的字元陣列,那麼 setbuf(stdout,buf);語句同時輸入輸出庫,所有的寫入到stdout 的輸出都應該使用buf 作為輸出緩衝區,直到buf 緩衝區被填滿或者程式設計師直接呼叫 fflush ,buf緩衝區中的內容才實際的寫到stdout 中。緩衝區的大小由系統標頭檔案中的bufsize 定義。

#include

main()

{int c;

char buf[bufsize];//這裡會造成錯誤,區域性變數會在main函式結束之後直接釋放

setbuf(stdout,buf);

《C陷阱與缺陷》第五章

c陷阱與缺陷 第五章 庫函式 5.1,返回整數的getchar函式 在c語言的庫函式中,將getchar函式的返回值定義為int 防止char溢位,例如char表示不了eof 5.2 更新順序檔案 根據c語言庫函式中的fread fwrite fseek 函式的用法,在fread和fwrite函式交...

第五章 函式

第五章 函式 1 函式的定義 shell函式定義可以放在 bash profile 檔案中,也可以在使用該函式的指令碼中,還可以在命令列中 通過 source 或 執行bash profile檔案,使修改能夠立即生效 function 函式名 declare f 顯示定義的函式清單 export f...

第五章 函式

在lua中,函式是對語句和表示式進行抽象的主要機制。即使呼叫函式時沒有引數,也必須要寫出一對空括號。一種特殊的例外情況 乙個函式若只有乙個引數,且此引數是乙個字面字串或table構造式,那麼圓括號別是可有可無的。print hello world dofile test.lua print a mu...