關於scanf 函式的一點理解

2022-05-25 03:27:09 字數 1237 閱讀 5397

習慣了c++的cin.cout之後,也不怎麼關注空格,反正cin.cout會自動處理。有一次實驗,建立huffman樹,要求輸入空格字元,當時就懵逼了.cin咋輸入空格呢?

沒辦法,只能重新用scanf函式了,結果各種悲劇,足足debug乙個多小時,這難道就是越學越差勁系列?

scanf()和printf()嚴格來說並不是c的一部分,當我們用scanf()函式輸入資料時,只要不回車,資料就暫存在緩衝區。因此我們可以輸入一下,

回車一下,也可以全部輸完再回車,一般來說這兩者沒啥區別,但遇到字元輸入時就需要格外注意了。

比如輸入空格和數字。

空格 12(空格的ascii碼值為32)。

輸入空格和12,然後回車,這顯然沒什麼問題。

在這基礎上,我們做一下改動。

#include #include 

using

namespace

std;

intmain()

當我們輸入a,b後,能不能回車,再輸入a1,b1.答案是不能,因為回車被a1給吸收了(o(╯□╰)o)(大一的時候對著明明很清楚的誒,咋忘了呢?)

我們再來做一下改動,我們不想寫多個scanf(),改為for迴圈控制。

**:

#include #include 

using

namespace

std;

intmain()

return0;

}

大家可能覺得這沒什麼問題,但輸入n之後回車的話,就會悲劇,所以需要在cin>>n後加乙個getchar();同時scanf()也要加乙個getchar()。

正確的**:

(ps:嘛,事實上可以用scanf(" %c",&a))這種形式吸收空格和回車(%c前面留個空格))

關於malloc的一點理解

在函式中使用malloc,如果是大的記憶體分配,而且malloc與free的次數也不是特別頻繁,使用malloc與free是比較合適的,但是如果記憶體分配比較小,而且次數特別頻繁,那麼使用malloc與free就有些不太合適了。因為過多的malloc與free容易造成記憶體碎片,致使可使用的堆記憶體...

關於HTTPS的一點理解

通訊使用明文 不加密 內容可能會被竊聽。不驗證通訊方的身份,因此有可能遭遇偽裝。無法證明報文的完整性,所以有可能已經遭到篡改。https http 認證 加密 完整性保護 https是與ssl 安全套接層 組合使用的http協議 http secure 使用ssl之後,請求則變成先和ssl通訊,ss...

關於Action的一點理解

之前學習jsp,就是從網上找些jsp例項 然後模仿,再加工成自己想要的,這樣一來,好多東西都是學了一點皮毛,例如action。下面是在看書時所知道的,看完後,有種頓悟的感覺。action的主要功能是生成頁面顯示所需要的資料,頁面則負責顯示action中的所設定的資料。頁面中的標籤在獲得action所...