這周開始寫課設,對於密碼輸入及加密這個部分進行了設計,同時也考慮了暴力輸入,如輸入上下左右鍵的情況。
所以我使用了getch函式來接受從鍵盤的輸入,注意getch函式沒有回顯且無快取區。
我用了判斷輸入字元的acsii碼來判斷是否為數字字母或符號,
if
(a >=
33&& a <=
126)
但是!!!!這樣你在輸入上下左右鍵時還是會顯示「 * 」,並且輸入一次上下左右鍵就會輸出乙個「 * 」。
但是我明明限制了輸入單個字元的acsii碼,為什麼上下左右鍵還是能輸入呢?
後來經過我反覆的測試,我嘗試輸入上下左右鍵再輸出上下左右鍵的acsii值
#include
#include
intmain
(void
)
然後我輸入了上下鍵,它就顯示了
我只是輸入了兩個鍵它就輸入完畢了,我思考後得出,
上下左右鍵的acsii碼分別為:
上:-32 72
下:-32 80
左:-32 75
右:-32 77
然後回到密碼輸入部分,為什麼輸入上下左右鍵它能輸入成功呢?-32明明不符合我的範圍
原因和上面一樣,你輸入乙個上下左右鍵就相當於非常快的輸入了兩個單字元,乙個的acsii碼是-32
乙個是72、75、77或80。雖然-32不符合,但是72這些數符合,於是系統便自然而然的認為我們輸入了正確字元。
那麼如何解決這個問題呢?
輸入上下左右鍵對洗頭來說只是輸入了乙個-32 以及乙個72,這兩個輸入並不在乙個迴圈中,如何判斷我輸入的是上下左右鍵呢?
這裡我用了乙個char型別的 量來儲存我的上乙個輸入值,如果上次輸入-32 這次輸入72之類的,那麼便判定我是輸入了乙個上下左右鍵,需要忽略這次輸入。
a=
getch()
;if(b==-32
)else
else
}
這是那一部分的**。
首先,如何辨別是否需要進行刪除呢?
這邊我用輸入字元的ascii為8時,即我在鍵盤上按下的鍵為backspace時判定需要進行刪除。
那麼如何刪除螢幕上的 * 呢?
這邊我使用了退格符\b
printf
("\b \b"
)
此語句的含義為,退格將前一格用空格代替,在將游標往前移動一位。
即實現了刪除 * 並且移動游標的操作。
如何判斷輸入完畢?
此處我還是使用了判斷輸入字元的acsii碼,輸入回車上時即輸入字元acsii為13時,輸入完畢。
輸入限制
輸入限制控制迴圈即可。
#include
#include
#include
#include
int main (
void
)else
else}if
(a==8)
//刪除。
else}if
(a==13)
//回車,表示輸入完畢。
if(a<8||
(a>
8&&a<13)
||(a>
13&&a<33)
||a>
126)}}
if(strcmp
(p,q)==0
)else
return0;
}
Sqlplus無法使用上下左右鍵的問題
或者 是在執行完.configure後報如下錯誤 configure warning no termcap nor curses library found checking for readline in lreadline.no configure error you need the gnu ...
JS中使用上下左右鍵盤控制元素移動
想要使用js實現操作上下左右鍵盤控制頁面中元素移動,需要解決的問題有,使用絕對定位將小汽車的位置布局在頁面中間差不多的地方 獲取按鍵按下事件 document.onkeydown function event console.log event.keycode 獲取到上下左右分別為38,40,37,...
通過上下左右鍵和回車鍵切換游標
做專案時,客戶提出這樣乙個要求,在列表中的文字框裡輸入資料時,要能夠通過上下左右鍵來切換游標,按回車鍵就把游標移到下乙個文字框。這樣就省得一直去用滑鼠了,操作起來更方便。不廢話,上 頁面 gdv runat server allowpaging true pagesize 50 autogenera...