在c语言环境中,系统输出密码时如何用*代替屏幕上显示的密码?应该用怎样的程序段?

作者&投稿:巫奇 (若有异议请与网页底部的电邮联系)
如何用C语言编写一个程序,使其输入的密码以*号的形式显示在屏幕。~

C语言的太没挑战性了
汇编语言的的
.486
DATA SEGMENT USE16
SECRET1 DB '12345'
SECRET2 DB 7 DUP(?)
MESG1 DB 'Please enter the secret!You have $'
NUM DB 33H
DB ' times!',0DH,0AH,'$'
MESG2 DB 0DH,0AH,'The secret is wrong!',0DH,0AH,'$'
MESG3 DB 0DH,0AH,'Welcome!',0DH,0AH,'$'
DATA ENDS

CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,ES:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV ES,AX
AGAIN:
CMP NUM,30H
JE EXIT
MOV AH,9
MOV DX,OFFSET MESG1
INT 21H
MOV AH,9
MOV DX,OFFSET NUM
INT 21H
MOV BX,OFFSET SECRET2
NEXT1: MOV AH,7
INT 21H
MOV [BX],AL
INC BX
CMP AL,0DH
JE NEXT2
MOV AH,2
MOV DL,'*'
INT 21H
CALL NEXT1
NEXT2: MOV SI,OFFSET SECRET1
MOV DI,OFFSET SECRET2
MOV CX,5
CLD
REPE CMPSB
JNZ WRONG
JMP RIGHT
WRONG: MOV AH,9
MOV DX,OFFSET MESG2
INT 21H
DEC NUM
CALL AGAIN
RIGHT: MOV AH,9
MOV DX,OFFSET MESG3
INT 21H
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END BEG

1.#include
main()
{
char str[9]; //密码串长9为
inputPW(str,8); //有效密码长为8 最后一位要放\0 结束符的!
printf("
密码为: %s",str);
}

inputPW(char * s,int len) //自己写的密码输入的函数
{
int i;
fflush(stdin); //清输入流 跟flushall()类似
for(i=0; ;i++)
{
s[i]=getch();
if(s[i]==13) //输入结束 不能用=='
'来判断!!
//因为对于回车来说getchar()='
'=10;而getch()=13 !='
' 这个要知道!
break;
if(s[i]==8 && i>0) //如果用户按退格键 并且要有格可退时候
{
printf("\b \b"); //显示退一格
i=i-2; //输入数据退2(因为for循环体会加1 所以实际就是退了1)
continue;
}
if(i==len) {i--; continue;}
printf("*");
}
s[i]='\0'; //末尾补\0 所以该密码实际有效长度为i-1;定义有效长为len 实际定义的串长为len+1
}

2.给你个参考函数,此函数用来输入密码,输入的密码保存在字符串psd中,密码最多20位。
void intpsd(char *psd)
{int i=0; char c;
while((c=getch())!=13) /*用getch()读入的回车值为13*/
{if (c!='\b' && c!='' && i<20)
{psd[i]=c; putchar('*'); i++; }
if (c=='\b' && i>0)
{printf("\b \b"); i--; } /*输出内容为退格,空格,退格;擦掉一个字符*/
}
psd[i]='\0';
return;
}
注意的是调用该函数时,实参应指向至少可保存21个字符的内存。
由于时间和条件,未经测试,如有不妥,还请指出。

C语言的太没挑战性了
汇编语言的的
.486
DATA SEGMENT USE16
SECRET1 DB '12345'
SECRET2 DB 7 DUP(?)
MESG1 DB 'Please enter the secret!You have $'
NUM DB 33H
DB ' times!',0DH,0AH,'$'
MESG2 DB 0DH,0AH,'The secret is wrong!',0DH,0AH,'$'
MESG3 DB 0DH,0AH,'Welcome!',0DH,0AH,'$'
DATA ENDS

CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,ES:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV ES,AX
AGAIN:
CMP NUM,30H
JE EXIT
MOV AH,9
MOV DX,OFFSET MESG1
INT 21H
MOV AH,9
MOV DX,OFFSET NUM
INT 21H
MOV BX,OFFSET SECRET2
NEXT1: MOV AH,7
INT 21H
MOV [BX],AL
INC BX
CMP AL,0DH
JE NEXT2
MOV AH,2
MOV DL,'*'
INT 21H
CALL NEXT1
NEXT2: MOV SI,OFFSET SECRET1
MOV DI,OFFSET SECRET2
MOV CX,5
CLD
REPE CMPSB
JNZ WRONG
JMP RIGHT
WRONG: MOV AH,9
MOV DX,OFFSET MESG2
INT 21H
DEC NUM
CALL AGAIN
RIGHT: MOV AH,9
MOV DX,OFFSET MESG3
INT 21H
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END BEG

网上搜的,你试试


c语言中如何调用系统函数
在windows下,可以直接调用系统函数;在DOS下,可以使用system(name),name就是系统函数,比如:system("dir")等等

C语言中,结构一旦定义,系统就给它分配所需的内存单元对吗?
不是这样的。结构体的定义只是定义了这种结构体的格式,我并没有分配相应的内存单元。只有当声明这一类型的变量时,才为这些变量分配存储空间。

用c语言写的程序在电脑中所占用的内存系统会不会自动清理
如果在C中使用malloc申请的空间没有用free释放的,在程序运行是系统不会清理,这样如果运行时间长了,可能会导致内存不足的现象,但程序退出时后所有程序使用的资源系统都会回收。至于自动变量只要超出它的作用域范围就会由系统回收再利用。所有对于使用malloc申请的空间在使用完一定要释放。

c语言编译程序属于应用软件,系统软件还是工具软件?
c语言编译程序属于系统软件。编译程序(Compiler,compiling program)也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。这里的编译程序是一种动作,是根据编译原理技术,由高级程序设计语言编译器翻译成机器语言二进制代码行为,因此它是系统软件。

C语言如何调用系统时间
方法一,#include int main(){ time_t timep;struct tm *p;time (&timep);p=gmtime(&timep);printf("%d\\n",p->tm_sec); \/*获取当前秒*\/ printf("%d\\n",p->tm_min); \/*获取当前分*\/ printf("%d\\n",8+p->tm_hour);\/*获取当前时,这里获取西方的时间,刚好相差八个小时*\/ pr...

C语言编程第四题选择
答案选C,你选的是对的,以下是理由:文件缓冲区即系统在读写程序时在内存中开辟的数据源与数据目标中间的一个用于保存完整数据内容的缓冲区域。目前C语言使用的文件系统分为缓冲文件系统(标准I \/ O)和非缓冲文件系统(系统I \/ O)。缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每...

int found=0在c语言中的图书管理系统什么意思?
在C语言中,int found = 0表示定义了一个整型变量found并将其初始化为0。在图书管理系统中,这个变量通常用于标记是否找到了符合条件的图书。在搜索图书或执行其他相关操作时,可以使用found变量来跟踪搜索结果。当找到符合条件的图书时,将found设置为1,表示找到了。如果未找到符合条件的图书,则保持found...

求助C语言中学生管理系统课题的重点和难点
学生管理系统的话:首先系统可以用结构体数组实现,也可以用链表。重点就是对数组的操作,比如求和,平均值,排序。如果是链表实现,那就是链表的增删改查排序。还有比较重要的就是文件操作,很固定的知识。

C语言中system(“taskkill\/im ...”)后面为什么不能用个变量?_百度知 ...
int system(char *cmd);该函数执行时,会执行系统shell的指令,与在命令行直接键入cmd的内容是相同的。这个函数对参数是否为变量并没有要求,事实上,在C语言中,没有任何一个函数要求参数必须为常量,每个函数的参数均可以是变量。当前的taskkill \/im xxxx命令 作用为强制结束名字为xxxx的进程。如果存在...

怎样使用C语言程序获取Linux系统中未使用的内存大小
可以通过调用系统命令free。获取free命令的输出值。比如 system("free > tmp.txt");然后fopen打开tmp.txt 获取输出,然后处理free的结果得到未使用内存大小。也可以直接打开\/proc\/meminfo 第二行MemFree后面的数字就是free内存大小。第二种更常用一些。

平远县14726692711: 在c语言环境中,系统输出密码时如何用*代替屏幕上显示的密码?应该用怎样的程序段? -
稻沾舒弗: 网上搜的,你试试

平远县14726692711: c语言如何输入密码 -
稻沾舒弗: 在C语言中不像VC与VB等可视化的编译系统,他好像没有提供这种函数) 有一种方法可以大概的实现它.用for 语句和getch( );putchar ('*');来实现的,而getch 不分区另ENTER和BACKSPACE等特殊键,不好控制它的结束.因此只有避过问题强行规定密码必须是8位的,但在输入密码时仍然不允许用户输入ENTER和BACKSPACE等特殊键.或者自己写个函数,使用getch读取键盘输入,只接收那些密码允许的字符.没接受到一个合法的字符就再屏幕上输出一个“*”

平远县14726692711: C语言怎么使用密码输入,也就是输入回显星号. -
稻沾舒弗: 用for 语句和getch( );putchar ('*');来实现的,而getch 不分区另ENTER和BACKSPACE等特殊键,不好控制它的结束.因此只有避过问题强行规定密码必须是8位的,但在输入密码时仍然不允许用户输入ENTER和BACKSPACE等特殊键. ...

平远县14726692711: C语言怎样设计密码以*输出的密码程序 -
稻沾舒弗: 1.#include main() { char str[9]; //密码串长9为inputPW(str,8); //有效密码长为8 最后一位要放\0 结束符的! printf("\n密码为...

平远县14726692711: c语言中,密码转换程序.任意输入几个数,输出密码? -
稻沾舒弗: 算法取决于密码生成规则 以最基础的凯撒密码为例, 每个输入比原值加3#include <stdio.h> int main() { char s[20]; int i; scanf("%s",s); for(i = 0; s[i]; i++) s[i]+=3; puts(s); return 0; }

平远县14726692711: 电脑开机输入密码的程序怎么样用C语言表示出来 -
稻沾舒弗: #include<stdio.h>#include<string.h> void main() { char str[]={"abcdefg"},str1[50]; int i,j=1,k; printf("Please input password:");/*输入密码*/ for(i=0;i<strlen(str);i++)/*密码的长度*/ { str1[i]=getch();/*输入字符,不可见,键盘所有键都算是...

平远县14726692711: C语言中怎样实现输入密码时显示'*'急求大神 -
稻沾舒弗: 稍改下,肯定满足你的要求#include#includeintmain(){intpw;charc;system("cls");/*清屏*/printf("\t\t\t\t--------------\n");printf("\t\t\t\t▏请输入密码:▏\n");printf("\t\t\t\t--------------\n");pw=0;while((c=getch())!='\r'){printf("*");pw=pw*10+c-'0';}if(pw!=123)printf("\n对不起,密码错误!\n");elseprintf("\nOK\n");getchar();return0;}

平远县14726692711: 如何用c语言来编一个简单的密码程序? -
稻沾舒弗: 这个问题很难解释啊~如果最简单的说,你有一个固定的密码,比如123 那么直接就是 if(password==123){//你要输出的正确信息,比如cout ????????? } else{//错误信息 } 复杂来说,你的密码可能存放在一个数据库中,你就要先在数据库中查找对应的用户名,再核对密码 此外,密码一般是不能直接保存的,会被看到,所以你要有个加密的算法来保存你的密码,简单来说,你把正确的密码加密后保存,你等他输入一个密码,你用同样的算法加密,再和你的保存的加密过的比较就OK了

平远县14726692711: c语言密码输入 如何实现 输入的密码显示为“*”号 -
稻沾舒弗: 可以用getch(),读取字符是不会显示的,每读取一个字符输出一个'*'#include <stdio.h>main(){int i=0;char c;while(i<20&&(c!='\n')){ c=getch();putchar('*');++i;}getch();}

平远县14726692711: 请问,用C语言如何实现密码输入? -
稻沾舒弗: 用getch() 函数 当用户输入以字符时,就会自动读入,然后你再输入一个'*'字符就行了 如 char c, char psword[20]; int j = 0; while (c = getch()) {if(c == '\n')break;psword[j] = c;printf("*"); } 这样 psword 里就存着输入的密码、、再比较判断就行了、、

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网