密碼輸入加密與上下左右鍵

2021-09-22 10:17:51 字數 1913 閱讀 2781

這周開始寫課設,對於密碼輸入及加密這個部分進行了設計,同時也考慮了暴力輸入,如輸入上下左右鍵的情況。

所以我使用了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...