1. 請問,用c語言如何實現密碼輸入
c語言中可採用getch()函數來實現輸入密碼字元時,不顯示字元到終端上,這時,只需要顯示出一個相應的*就可以達到效果了。參考代碼及運行效果如下圖:
2. C語言如何讓輸入的字元數據全部顯示為星號
是不是因為用了中文字元?我只有英文法文環境,無法試驗。
這里給你一個我曾用過的輸入英文字元的程序,允許的字元長度個數你可以修改加大。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char u[40];
char p[80];
char u_name[40];
char password[80]="Leaf888";
int i=0;
printf("type user name:\n");
scanf("%s",u_name);
printf("type your password:\n");
while ( i < 80 ){
p[i] = getch();
if (p[i] == '\r') break;
if (p[i] == '\b') { i=i-1; printf("\b \b"); } else {i=i+1;printf("*");};
}
p[i]='\0';
if ( strcmp(password,p)==0) printf("\nThe passwd is right!\n");
else printf("\n You typed wrong password:%s",p);
return 0;
}
3. c語言,輸入密碼帶星號的設計,幫忙解釋一下代碼的意思。謝謝
system("cls"); -- 清屏幕
printf("請輸入加密密碼:\n"); -- 提示輸入
for(i=0;i<20;){ //循環語句開始,密碼不超過20個字元
pass[i]=(char)getch(); // 不需要等待,即時取得1個輸入鍵,作為字元存入pass[i]
if(pass[i]==8){ }; // 如果即時取得的是 Backspace 鍵,如何處理
if(pass[i]==13){ } else printf("*"); // 如果即時取得的是 Enter 鍵(鍵值13), 密碼輸入結束,pass[i] 賦字元串結束符 '\0', 並結束循環(break)。 否則 列印1個 * 號;
i++; // i 增1,為取下1個字元做准備。
} // 循環語句結束
-------------------
下面詳細地看,Backspace 鍵,如何處理
if(pass[i]==8)
{
printf("\b \b"); // 輸出 "\b \b" ,回退1格,輸出1個空白,也就是抹去屏幕上一個字元,再讓游標回退到空白左面
i--; // Backspace 鍵是功能鍵,不作為密碼字元,所以 i 減去 1
pass[i]='\0'; // 賦字元串結束符
continue; // 跳到下一次循環。
}
-----
程序寫完整了是:
main()
{
int i;
char pass[30];
system("cls");
printf(" input pass\n");
for(i=0;i<20;){
pass[i]=(char)getch();
if(pass[i]==8){ printf("\b \b");i--; pass[i]='\0'; continue; };
if(pass[i]==13){ pass[i]='\0'; break;}
else printf("*");i++;
}
printf("%s",pass);
}
程序缺點是,如果一開始就敲入幾個 Backspace 鍵,密碼前幾個字元就會丟失。
4. c語言如何實現輸入數字密碼,然後顯示星號,最後能與確定的密碼進行比較。
charpass[30];
inti=0;
while(i<29&&(pass[i]=getch())&&pass[i]!=' '){
printf("*");
i++;2
}
pass[i]=0;
if(strcmp(pass,"1234")==0){
printf("Allright ");
}
else{
printf("Wrong ");
}
5. C語言怎麼使用密碼輸入,也就是輸入回顯星號。
/*密碼輸入,回顯星號的程序*/
int main(void)
{
int i;
static char str[80]; /*靜態存儲*/
clrscr();
for (i=0; i<80; i++)
{
str[i] = getch(); /*逐次賦值,但不回顯*/
printf("*"); /*以星號代替字元個數*/
if (str[i] == '\x0d')/*回車則終止循環*/
{
break;
}
}
printf("\n");
i = 0;
while (str[i] != '\x0d')
{
printf("%c", str[i++]);/*依次輸出各元素*/
}
printf("\n");
getch();
return 0;
}
6. C語言中如何輸入密碼顯示星號
voidmain(){charstr[256];intc,i=0;
while(1){
c=getch();if(c==13)break;
printf("*");str[i]=c;i++;
}
str[i]=0;printf("%s ",str);
}
7. c語言密碼驗證程序,要求輸入密碼是顯示星號
下面程序示意如何輸入和驗證passwd.
假定已知蜜碼 是1234,存在 char password[50] 里。
輸入和驗證。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char p[50];
char password[50]="1234";
int i=0;
printf("type your password:\n");
while ( i < 50 ){
p[i] = getch();
if (p[i] == '\r') break;
if (p[i] == '\b') { i=i-1; printf("\b \b"); } else {i=i+1;printf("*");};
}
p[i]='\0';
if ( strcmp(password,p)==0) printf("\nThe passwd is right!\n");
else printf("\n You typed wrong password:%s",p);
return 0;
}
8. C語言如何實現輸入密碼以星號顯示
呵呵!
這個很簡單的啊,你只要將你的密碼保存在一個數組中啊,以便下次匹配密碼時使用啊,但你的輸出為「*」就好啦,給你個例子啊
密碼長度為6哈
#include <stdio.h>
int main()
{
int c[6];
int i = 0;
while(i < 6)
{
c[i++] = getchar();
putchar('*');
}
return 0;
}
9. C語言怎樣加密碼變成星號
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
int chcode() {
char pw[50],ch;
char *syspw = "abc"; // 原始密碼
int i,m = 0;
printf("請輸入密碼:");
while(m < 3) {
i = 0;
while((ch = _getch()) != '\r') {
if(ch == '\b' && i > 0) {
printf("\b \b");
--i;
}
else if(ch != '\b') {
pw[i++] = ch;
printf("*");
}
}
pw[i] = '\0';
printf("\n");
if(strcmp(pw,syspw) != 0) {
printf("密碼錯誤,請重新輸入!\n");
m++;
}
else {
printf("密碼正確!\n");
system("pause");
return 1;
}
}
printf("連續3次輸入錯誤,退出!\n");
system("pause");
return 0;
}
int main() {
int login = chcode();
if(login) printf("登錄成功!\n");
else printf("登錄失敗!\n");
return 0;
}
10. 關於C語言中 輸入密碼時變星號的 一些問題
#include<stdio.h>
#include<conio.h>
main()
{
char password[20];#include<stdio.h>
#include<conio.h>
main()
{
char password[20]; //定義長度為20的數組password
char ch;
int n=0;
while ((ch = getch()) != '\r') //判斷輸入的字元是否為回車,若是,則循環結束
{
if (ch == '\b')//若輸入的字元是否為退格
{
{
if ((n-1) < 0)//若目前長度為0
{
password[0] = '\0';printf("\b \b");//該秘密位為空,列印
}
else
{
password[n--] = '\0';printf("\b \b");//該密碼位的上一位為空,列印
}
}
else
{
password[n] = ch;putchar('*');n++;//賦值該字元,列印密碼*,n自增
}
}
password[n] = '\0';//最後以空結束
}
char ch;
int n=0;
while ((ch = getch()) != '\r') //沒輸入一個字元,判斷是否為回車
{
if (ch == '\b')
{
if ((n-1) < 0)
{
password[0] = '\0';printf("\b \b");
}
else
{
password[n--] = '\0';printf("\b \b");
}
}
else
{
password[n] = ch;putchar('*');n++;
}
}
password[n] = '\0';
}