關於scanf的疑問

2021-06-26 16:37:23 字數 560 閱讀 1659

scanf函式是從標準輸入流(stdin)讀取資料,按照格式說明引數,將資料寫入引數位址所在空間,標準輸入流預設的是鍵盤輸入流,但是,由於作業系統的緩衝區管理機制,從鍵盤上輸入的資料不是直接被scanf函式讀取的,而是暫存在記憶體緩衝區,只有遇到回車鍵的時候,scanf函式才會開始工作,並且,最後輸入的回車鍵也會送到緩衝區。

也就是說,scanf函式讀取的資料是緩衝區裡的資料,只有當緩衝區為空的時候程式才會停止下來,等待輸入,如果緩衝區裡面有資料,就會直接讀取緩衝區,不需要等待輸入。

但是,奇怪的是,為什麼有「\n」的時候,輸入三個數之後,沒有執行printf,隨機輸入乙個數之後,就可以正常執行了。

[cpp]view plain

copy

#include 

void

main()    

如果把scanf裡面的「\n」刪掉,程式就可以正常執行。

[cpp]view plain

copy

#include 

void

main()  

關於 retainCount 的疑問

我在 main.m 裡寫了三個測試例子,就是不明白為什麼輸出的都是 1 別人幫忙測試了下,輸出的是額外的超大的值 nsstring str1 welcome nslog d str1 retaincount nsstring str2 nsstring stringwithstring you ns...

關於sort 的疑問?

對於不同型別的資料從小到大排序可以直接用sort 函式排,但是如果是從大到小排序,就得寫乙個比較函式了,怎麼辦呢?我的第一想法就是利用函式模板寫乙個cmp 函式,如下 所示,但是這串 是通不過編譯的,include include using namespace std template bool ...

關於Stuck Archiver的疑問

客戶使用crsctl stat res t命令去檢視rac集群狀態時,發現異常,知曉stuck archiver代表歸檔滿,問我們為什麼rac是同乙個庫,只有例項1顯示stuck archiver,而例項2卻沒事?ora.orcl.db 1 online intermediate db01 stuc...