自從用visualstudio2015之後就不願再去使用visual c++6.0了,但是最近在學資料結構圖時,總是在字元的連續輸入遇到困惑.
使用vs都知道,要用scanf_s對鍵盤讀入資料。
scanf("%c,%c",&a,&b);可以對字元連續輸入;
如果是迴圈輸入,在下新增getchar();這樣乙個語句吞噬掉輸入時的回車即可;
但是同樣用for(int i=0;i<10;i++){
scanf_s("%c,%c",&a,&b);
getchar();
確達不到相同的結果,debug時老是讀入乙個『 -52 ?』什麼的乙個不知道是什麼的鬼東西,使得下次輸入前就讀入這樣乙個無效資料。如:出現下面類似的樣子,後面直接一步調到低了。
我一直以為是關於沒有吞噬掉回車的問題,認真看了對scanf_s輸入後,事實並不是這樣的,scanf_s與scanf的還是有區別的,
畢竟是更新之後的版本。相比scanf_s安全,因為 scanf_s() 是針對「 scanf()在讀取字串時不檢查邊界,可能會造成記憶體洩
露」,scanf_s()用於讀取字串時,必須提供乙個數字以表明最多讀取多少位字元,以防止溢位。
因此for(int i=0;i<10;i++){
scanf_s("%c,%c",&a,1,&b,1);
getchar();
這樣就沒有問題了。
scanf函式與scanf s函式
ansi c中沒有scanf s 只有scanf scanf 在讀取時不檢查邊界,所以可能會造成記憶體洩露。所以vc 2005 2008中提供了scanf s 在最新的vs2013中也提供了scanf s 在呼叫時,必須提供乙個數字以表明最多讀取多少位字元。目前最新的c11標準中已經將scanf s...
gets 與 scanf 的區別
scanf 函式和gets 函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串 hellow word 則應該使用gets 函式。gets可以接收空格 而scanf遇到空格 回車和tab鍵都會認為輸入結束,所有它不能接收空格。char string 15 gets string 遇到回車認...
關於scanf與gets的區別
scanf與gets讀取字串 scanf與gets函式讀取字串的區別 前兩天有個同學問我scanf與gets的區別說了半天也沒說出來個所以然,就搜了一下,scanf 和gets的區別大致有著幾條 1.scanf 會忽略行開頭的所有空格,並以空格 換行符結束輸入 使用getchar 讀取scanf語句...