最近在MFC做一個檔案加密軟體,用GetDlgItemText 函式,將其中 nMaxCount引數設為9,當需要控制編輯框中輸入密鑰的個數時,我用strlen確定傳過來字符個數。想要用8個字符作為加密密鑰,,但是我在做控制時,
else if (strlen(ch_Key) >= 9)
{
MessageBox("密鑰長度過長! 重新輸入!!!!");
return;
}
這個代碼好像不起作用,只要輸入的字符個數是8個以上,都會繼續執行,并不會回傳。然后我又寫了個測驗代碼,如圖。

發現結果如圖。
我也不知道為什么呀,我查了字串陣列,也沒看到什么有用的。所以來問問大家。感激不盡。
uj5u.com熱心網友回復:
你提供的兩段代碼,沒有什么關聯啊?另外,對于char[] 陣列,scanf是,不應該是 &str,應該是 scanf("%s", str),因為str本身就是指標(陣列)。
uj5u.com熱心網友回復:
除錯看看strlen 回傳多少,字串發出來看看就知道了uj5u.com熱心網友回復:
其實電腦開機后物理記憶體的每個位元組都是可讀寫的,從來不會因為所謂的new、delete或malloc、free而被創建、銷毀。區別僅在于作業系統記憶體管理模塊在你讀寫時是否能發現并是否采取相應動作而已。作業系統管理記憶體的粒度不是位元組而是頁,一頁通常為4KB。uj5u.com熱心網友回復:
scanf("%3s",str);uj5u.com熱心網友回復:
在判斷長度超出了限制之后,要把字串中多余出來的字符去掉,不然只會有提示,并不能做到實際的限制uj5u.com熱心網友回復:
scanf 不能取地址符&uj5u.com熱心網友回復:
下面那段代碼注意陣列溢位的問題。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/113977.html
標籤:基礎類
上一篇:mfc樹形控制元件子選單回應顯示不同的對話框在右側顯示但不能操作該對話框
下一篇:關于CString
