天天看點

C scanf與gets差別

  • scanf與gets函數共同點

    • 二者都是從終端讀取字元串

    而差別是

    • gets功能為讀入一行,并将換行符轉換為字元串結束符。
    • scanf("%s",s);讀入時,遇到空白字元,包括空格,制表符,換行符時均會停止輸入。
    功能上的不同
    • 終止條件不同。gets隻有遇到\n時才會結束輸入,而scanf遇到空格或制表符時,也會結束輸入。

      比如輸入"test string\n"。

      用gets得到的字元串為"test string", 二用scanf得到的是"test"。

    • 終止後,對終止字元處理不同。

      比如輸入為"test\nabcd"。

      執行gets後,\n不會留在緩沖區中,即這時調用getchar得到的字元是'a'。

      執行scanf後,\n會留在緩沖區,這時調用getchar得到的字元是'\n'。