關於c標準庫函式gets的危害

2021-07-25 07:41:34 字數 622 閱讀 4147

gets從標準輸入裝置讀字串函式。

原 型 char * gets ( char * str );

gets可以無限讀取,不會判斷上限,所以程式設計師應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢位。如果溢位,多出來的字元將被寫入到堆疊中,這就覆蓋了堆疊原先的內容,破壞乙個或多個不相關變數的值。這個事實導致gets函式只適用於玩具程式,為了避免這種情況,我們可以用fgets(stdin) (fgets實際上可以讀取標準輸入(即大多數情況下的鍵盤輸入),具體參閱fgets詞條)來替換gets()。在v7的手冊(2023年)中說明:為了向後相容,gets刪除換行符,gets並不將換行符存入緩衝區。

由於可以無限讀取,所以在2023年12月,ansi 採納了 iso/iec 9899:2011 標準,標準中刪除了 gets()函式,使用乙個新的更安全的函式gets_s()替代。

#include #include int main(int argc, char const *argv)

/**測試下

$./a.out 

abcabc

*/

C 標準庫函式

有許多不同的案件中,陣列排序的可能是有用的。演算法 如搜尋看看一些存在於乙個陣列 通常可以變得更簡單和 或更有效時,輸入的資料進行排序。此外,排序是非常有用的可讀性,如當列印列表按字母順序排列的名字。排序通常是通過反覆比較的陣列元素對進行的,和交換他們如果他們滿足一些標準。為了在這些元素進行比較根據...

C 標準庫函式

c 程式通常可以呼叫標準c 庫中的大量函式。這些函式完成一些基本的服務,如輸入和輸出等,同時也為一些經常使用的操作提供了高效的 實現 這些函式中含有大量的函式和類定義,以幫助程式設計師更好地使用標準c 庫。標準c 庫包含以下內容 和 標準c 庫的詳細訊息均在其對應的標頭檔案進行了說明。主要標準c 庫...

c標準庫函式 system

宣告 int system const char command command為請求執行的shell命令構成的字元陣列。使用 char command 50 strcpy command,ls l 列出 unix 機上當前目錄下所有的檔案和目錄 int status system command ...