如何將輸入的數字改為顯示***號
如題,小弟用C寫一個簡單的小程式如下,但不知如何將scanf輸入的部份改為星號顯示在螢幕上
main() { int i=0,pass; for ( ; ; ) { printf ("Please Input Passwd: "); scanf("%d", &pass); if (pass == 1111) break; else printf ("Passwd Error\n"); } } |
在DOS下, 是沒辦法的...
因為程式是等你...... ... 在DOS的命令列輸入 abcdefg 之後, 才會讀到abcdefg... (C語言的scanf...是等使用者輸入完文字後, 按下[Enter], 才能取得文字...) (C語言的scanf...並沒有即時性...不像目前的視窗程式, 或網頁的Script...可以即時偵測) 所以...很遺憾......... |
給您參考 (還是比較喜歡用 basic ^^)
#include <stdio.h> #include <conio.h> void main() { unsigned int c1, c2; c2=0; do { while (!kbhit()); c1 = getch(); if(c1>=48 && c1<=57){ c1=c1-48; c2=c2*10+c1; printf("*"); } } while(c1!=13); printf("\nPass word is %d\n",c2); system("PAUSE"); } |
原來還有這個方法...(請原諒我的無知...C語言我以前只學了1學期...)
|
阿哩阿多....真是太謝謝你們了~~
想請教一下mini.... while(c1!=13);是做啥判斷用的,數值一定要13嗎? |
0d 是 Enter 鍵的 KeyCode 值
0d 換算成十進制 = 13 比如您要用 o 當輸入鍵可改成 0x6f = 111 do{ }while(c1!=13); 是讓程式直到按下 [Enter] 才離開 使用者輸入作業區段 while (!kbhit()); 是無窮迴圈,當使用者按下鍵盤才離開 |
引用:
-21092......不知是哪邊ㄉ問題 |
請將 void main
改成 main (也就是去掉 void) 再編譯一次 以下是.c原始檔及.exe http://www.qfile.de/dl/137403/TestAPP.rar.html (此空間需在網頁下下載,不適用flashget等工具下載) 有些編譯器只要有一點錯誤就不能成exe使得使用者執行exe檔時其實是舊的 exe導致錯誤 剛剛執行 .exe 時發現的問題(TestAPP.rar 已更正) 密碼的最大值是 unsigned int = 正整數(4Byte) = 0 ~ 4,294,967,295 實際上還要看 使用的C編譯器及作業系統 (個人用Dev-C++編譯就不能到這麼高 1234567890 還可以,到底極限在哪就請您自己研究了) http://yes.nctu.edu.tw/VC/Ref/BasicDataType.htm 如果還不行 可能是 unsigned int 與 getch() 配合的問題 (因為 getch() 的輸出值是 int) 所以可以試試在 c1 = getch(); 前加個 c1 = 0; 來清空 c1 |
引用:
|
其實個人講的也不一定正確(只是一時想不出什麼理由...^^||)
像是 unsigned int 與 getch() 配合的問題 這點就有待商榷 因為 int 與 unsigned int 都是 4byte的資料結構大小 所以有可能因此需多加個 清空 的動作嗎? 好像不用的說... |
所有時間均為台北時間。現在的時間是 08:42 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *