C语言小程序!

C语言小程序!,第1张

char c,password[8]

int i=0

while(i<8)

{

c=char(getch())

if(int(c)==13)//敲入回车

break

if(int(c)<58&&int(c)>47||int(c)>64&&int(c)<91||int(c)>饥雹96&&int(c)<123)

{

cout<<'*'

password[i]=c

i++

}

}

password[i]='\0'

该段函数在试验时发现:当输入backspace键时,没有反应,用户无法作出修改。于是添加关于backspace的判别。backspace键的ASCII码为8。

char c,password[8]

int i=0,x,y

x=wherex() //由于backspace的缘故,考虑初始位置问题

y=wherey()

while(i<8)

{

c=char(getch())

if(int(c)==8)//敲入backspace

{

gotoxy(x+i-1,y) //回到前一个位置

cout<<" "//挡住后面的字符,此时输入焦点又回到了后面

gotoxy(x+i-1,y) //再次移动输入点

i--//字符数减少

mypass[i]='\0' //字符被删除

continue //再次循环,等待输入

}

if(int(c)==13)

break

if(int(c)<58&&int(c)>47||int(c)>64&&int(c)<91||int(c)>96&&int(c)<123)

{

cout<<'烂碰帆*'

password[i]=c

i++

}

}

password[i]='\0'

这一段比上面完善得多,用户可以删除部分字符。然而(但是…可是…but…however),问题1,当不停的按下backspace键,结果将是灾难性的,如果你是在cout<<"输入密码:"后面执行mypass(password),那么它将把“输入密码:”几个字也毫吵迟不客气的删除;问题2,当用户在没有输入任何字符的时候按下回车键,程序照样同意,但是这将产生一个空密码。

但是这两个问题很好解决,只要加入几个判别式就行了:),同时我还发现,将输入点向前移动一位的 *** 作完全可以用cout<<char(8)<<' '<<char(8)来代替,这样连x,y以及wherex(),wherey()都用不着了。最后的程序如下:

void mypass(char mypass[8])

{

int i=0

char c

while(1)

{

c=char(getch())

if(int(c)==8)//敲入backspace

{

if(!i)

continue

cout<<char(8)<<' '<<char(8)

i--

mypass[i]='\0'

continue

}

if(int(c)==13) //敲入回车键

{

if(!i)

continue

else

break

}

if((int(c)<58&&int(c)>47||int(c)>64&&int(c)<91||int(c)>96&&int(c)<123)&&i<8)

{

cout<<'*'

mypass[i]=c

i++

}

else

continue

}

mypass[i]='\0'

return

}

至此大功告成。:)

用dlopen函数打开返肢你要使用的so动态库

用dlsym函数获取该动态库中你指定的函数的函数指针

使用这个函数指针即可实现函数的调用

用dlclose函数关闭动态库

编译源代码时,如果是gcc编译器,加上编译余世派选项: -ldl

意思是编译时链接dl库,因竖贺为上面3个函数是dl库里的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12499535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存