| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 719 人关注过本帖
标题:[转帖]编程技巧汇萃
只看楼主 加入收藏
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
结帖率:66.67%
收藏
 问题点数:0 回复次数:6 
[转帖]编程技巧汇萃

/*显示警告窗口*/ void warn_message(char *s1,char *s2) { char buffer[2000]; gettext(30,8,76,16,buffer); CLSXY(8,32,9,30,6); CLSXY(4,30,8,30,6); COLOR(15,4); gotoxy(35,10); DISPLAY(s1); gotoxy(35,12); DISPLAY(s2); gotoxy(40,13); DISPLAY("按任意键继续..."); getch(); puttext(30,8,76,16,buffer); }

/*得到文件长度*/ long GetFileLength(char *file) { FILE *fp; int i; if ((fp=fopen(file,"rb"))==NULL) { clrscr(); printf("Can't open the file %s .",file); return 0; } i=0; while(!feof(fp)) { i++; fgetc(fp); } fclose(fp); return (i-1); }

/*窗口滚屏*/ void WINDOW_ROLL(int y1,int x1,int yl,int xl,int direct) { union REGS regs; int x2,y2; x1--; y1--; x2=x1+xl-1; y2=y1+yl-1; regs.h.ah=5+direct; /*ah=06h 向上滚动当前页*/ /*ah=07h 向下。。。 */ regs.h.al=1; regs.h.bh=16*pmbj+pmqj; regs.h.ch=y1; /*左上角行*/ regs.h.cl=x1; /*列*/ regs.h.dh=y2; /*右下角行*/ regs.h.dl=x2; /*列*/ int86(16,?s,?s); }

/*扫描键盘*/ int scan_keyboard(int *m) { union inkey { unsigned char ch[2]; int ii; }cc; while(!bioskey(1)) {;} cc.ii=bioskey(0); *m=cc.ch[1]; return cc.ch[0]; }

/*插入字符串*/ void INSERT_STRING(char *ds,char *ss,int n) { char s[100]; MID(ds,s,n,-1); ds[n-1]=0; strcat(ds,ss); strcat(ds,s); } void STR_ADD_CHAR(char *s,char ch) { char s1[2]; s1[0]=ch; s1[1]=0; strcat(s,s1); }

/*检测磁盘是否准备就绪*/ int CheckDiskReading(int n) { int result; char buffer[512]; result=biosdisk(4,n,0,0,0,1,buffer); result=result&0x02; if (result!=0x02) return 0; return 1; }

/*检测磁盘是否写保护*/ int CheckDiskWriteProf(void) { int result; char buffer[512]; result=biosdisk(5,0,0,0,0,1,buffer); if (result==0x03) return 0; return 1; }

/*修改文件的某一行*/ int ModifyFileLine(char *filename,char *s,int n) { char data[20][80]; int i; FILE *fp; if ((fp=fopen(filename,"r"))==NULL) return 0; i=0; while(READ_STR(data[i],fp)) i++; fclose(fp); fp=fopen(filename,"w"); strcpy(data[n-1],s); n=i-1; for(i=0;i<=n;i++) WRITE_STR(data[i],fp); fclose(fp); return 1; }

/*成批拷贝文件*/ int CopyFile(char *sfile,char *dfile,int f2d,int barlong,int height,int x,int y) { int Copyfile(char *sf,char *df); int MakeNdir(char *Dir); char filename[200][13],d[40],s[40],s1[40]; struct ffblk ffblk; int done,i,j,l,len; i=0; done=findfirst(sfile,&ffblk,0); if (!done) strcpy(filename[i],ffblk.ff_name); while(!done) { done=findnext(&ffblk); if (!done) { i++; strcpy(filename[i],ffblk.ff_name); } } if (f2d) { Copyfile(sfile,dfile); return 1; } strcpy(s,sfile); l=strlen(sfile); for(j=l-1;j>=0;j--) if (s[j]=='\\') { s[j+1]=0; break; }

/*拷贝一个文件*/ int Copyfile(char *sf,char *df) { FILE *in,*out; char ch; in=0; out=0; if ((in=fopen(sf,"rb"))==NULL) exit(0); if ((out=fopen(df,"wb"))==NULL) exit(0); while(!feof(in)) { ch=fgetc(in); if (ferror(in)) return 0; fputc(ch,out); if (ferror(out)) return 0; } fclose(in); fclose(out); return 1; }

/*建立目录*/ int MakeNdir(char *Dir) { int i,l,j; char s[10][40]; j=0; l=strlen(Dir); for(i=0;i<l;i++) if (Dir[i]=='\\') { LEFT(s[j],Dir,i); j++; } strcpy(s[j],Dir); for(i=0;i<=j;i++) if (access(s[i],0)) mkdir(s[i]); return 1; }

/*得到目录*/ int GetDir(char *dirF,char dataK[][14]) { struct ffblk ffblk; int done; int i; i=0; done=findfirst(dirF,&ffblk,FA_DIREC); while(!done) { if (ffblk.ff_attrib==16||ffblk.ff_attrib==17) { strcpy(dataK[i],ffblk.ff_name); strcat(dataK[i],"\\"); i++; } done=findnext(&ffblk); } return i; }

/*得到文件名*/ int GetFile(char *dirF,char dataK[][14]) { struct ffblk ffblk; int done; int i; i=0; done=findfirst(dirF,&ffblk,0); while(!done) { strcpy(dataK[i],ffblk.ff_name); done=findnext(&ffblk); i++; } return i; }  /*任意两个正整数相加(<80位)*/ /*参数说明:numA,numB分别为加数和被加数,result存放相加后的结果*/ void add(char *numA,char *numB,char *result) { int i,j,a,b,c,jw,Alen,Blen; /*定义变量*/ char num[81]; char numC[81]; /*定义新的字串,长度与numA相同*/ char ch; char s[1]; num[0]=0; numC[0]=0; if (strlen(numA)>=80) return; if (strlen(numB)>=80) return; for(i=0;i<strlen(numA);i++) /*判断输入数是否非法*/ if (!isdigit(numA[i])) return; /*如果非法返回结果为空*/ for(i=0;i<strlen(numB);i++) if (!isdigit(numB[i])) return; if (strlen(numA)<strlen(numB)) /*将较大的数放入numA中*/ { strcpy(num,numA); strcpy(numA,numB); strcpy(numB,num); num[0]=0; } Alen=strlen(numA); Blen=strlen(numB); strcpy(numC,numB); for(i=0;i<Alen;i++) numC[Alen-i-1]=numC[Blen-i-1]; for(i=0;i<Alen-Blen;i++) /*在numC中插入n个0,使其长度等于numA*/ numC[i]='0'; jw=0; /*进位*/ for(i=0;i<Alen;i++) { s[0]=numA[Alen-i-1]; s[1]=0; a=atoi(s); s[0]=numC[Alen-i-1]; s[1]=0; b=atoi(s); c=a+b+jw; if (c>=10) { jw=1; c=c-10; } else jw=0; itoa(c,s,10); num[i]=s[0]; } if (jw==1) {num[i]='1';num[i+1]=0;} else num[i]=0; j=strlen(num); for(i=0;i<j/2;i++) { ch=num[i]; num[i]=num[j-i-1]; /*将num反转*/ num[j-i-1]=ch; } strcpy(result,num); return; /*返回相加结果*/ }

/*任意两个正整数相乘*/ /*参数说明:numA,numB 分别为乘数和被乘数,resultm存放积*/ void mult(char *numA,char *numB,char *resultm) { int i,j,k,l,m,a,b,c,jw,Alen,Blen,f; /*定义变量*/ char resulta[82]; char num[161]; char ch; char s[1]; num[0]=0; f=0; if (strlen(numA)>=80) return; if (strlen(numB)>=80) return; for(i=0;i<strlen(numA);i++) /*判断输入数是否非法*/ if (!isdigit(numA[i])) return; /*如果非法返回结果为空*/ for(i=0;i<strlen(numB);i++) if (!isdigit(numB[i])) return; if (strlen(numA)<strlen(numB)) /*将较大的数放入numA中*/ { strcpy(num,numA); strcpy(numA,numB); strcpy(numB,num); num[0]=0; } Alen=strlen(numA); Blen=strlen(numB); strcpy(resultm,"0"); for(i=0;i<Blen;i++) { s[0]=numB[Blen-i-1]; s[1]=0; c=atoi(s); strcpy(resulta,numA); if (c==0) strcpy(resulta,"0"); for(j=0;j<c-1;j++) {add(resulta,numA,resulta);} l=strlen(resulta); for(k=0;k<i;k++) { resulta[l+k]='0'; resulta[l+k+1]=0; } add(resultm,resulta,resultm); } }

/*从键盘中读取字符 功能:按下普通键时,返回其ASCII码 扫描码CODE=0*/ int INKEY(int *code) { int m; while(!bioskey(1))/*可加入无按键时代码*/; *code=bioskey(0); m=*code*255; if(!m) m=*code>>8; *code=*code&255; return m; }

/*获取机器日期*/ int DATE(char *s,char type) { char dat[30]; int num; struct tm *tblock; time_t t; t=time(NULL); tblock=localtime(&t); strcpy(dt,asctime(tblock)); strcpy(s,""); switch(type) { case 'N': num=(*tblock).tm_year+1900; itoa(num,s,10); break; case 'Y': num=(*tblock).tm_mon+1; itoa(num,s,10); break; case 'R': num=(*tblock).tm_mday; itoa(num,s,10); break; case 'S': strcpy(dt,asctime(tblock)); MID(s,dt,12,8); break; } } return num; }

/*将浮点数转化为字符串*/ /* 参数说明 data:需转换的浮点数;s:输出字符串;len:转换后的长度*/ void f_to_s(double data,char *s,int len) { int dec,sign,i; char *s1,s2[100],s3[100]; s1=0; s2[0]=0; s3[0]=0; s1=fcvt(data,len,&dec,&sign); if (!sign&&data>=1) { MID(s2,s1,dec+1,-1); MID(s3,s1,1,dec); strcpy(s,"+"); strcat(s,s3); strcat(s,"."); strcat(s,s2); } if (sign&&fabs(data)>=1) { MID(s2,s1,dec+1,-1); strcpy(s,"-"); MID(s3,s1,1,dec); strcat(s,s3); strcat(s,"."); strcat(s,s2); } if (!sign&&dec==0) { strcpy(s,"+0."); strcat(s,s1); } if (sign&&dec==0) { strcpy(s,"-0."); strcat(s,s1); } if (!sign&&dec<0) { strcpy(s,"+0."); for(i=1;i<=fabs(dec);i++) strcat(s,"0"); strcat(s,s1); } if (sign&&dec<0) { strcpy(s,"-0."); for(i=1;i<=fabs(dec);i++) strcat(s,"0"); strcat(s,s1); } if (strlen(s)>len) s[len]=0; }

/*清除屏幕*/ void CLSXY(int color,int x,int y,int xl,int yl) { int x1,y1; union REGS r; if(x<1||y<1) return; y--; x--; y1=y+yl-1; x1=x+xl-1; if (y1>25||x1>80) return; r.h.ah=6; /*子功能号*/ r.h.al=0; /*滚动行数*/ r.h.ch=y; r.h.cl=x; r.h.dh=y1; r.h.dl=x1; r.h.bh=color*16; int86(16,&r,&r); }

/*显示时间*/ void display_time(int color,int back_color,int y,int x) { static char oldtime[9]=""; char newtime[9]; if(y<1||x<1) return; settextstyle(1,0,1); DATA(newtime,'S'); back_color=7; if(strcmp(newtime,oldtime)) { setfillstyle(1,back_color); setcolor(color); bar(535,458,635,475); outtextxy(x,y,newtime); strcpy(oldtime,newtime); } }

/*打印一个矩形*/ void PRINT_KJ(int x,int y,int wide,int high) { int i; for(i=x;i<x+wide;i+=2) { gotoxy(i,y); cprintf("?"); } gotoxy(x,y+high); cprintf("?"); gotoxy(x+wide,y+high); cprintf("?"); gotoxy(x,y); cprintf("?"); gotoxy(x+wide,y); cprintf("?"); for(i=x+2;i<x+wide;i+=2) { gotoxy(i,y+high); cprintf("?"); } for(i=y+1;i<y+high;i++) { gotoxy(x,i); cprintf("?"); } for(i=y+1;i<y+high;i++) { gotoxy(x+wide,i); cprintf("?"); } }

/*砍掉字符串中所有空格*/ void CUT_ALL_SPC(char *s) { int i,n; char d[10000]; n=0; for(i=0;i<strlen(s);i++) if(s[i]!=32) { d[n]=s[i]; n++; } d[n]=0; strcpy(s,d); }

/*取子字符串*/ void MID(char *s,char *t,int n,int m) { int i,j,p; if(n<1) n=1; i=strlen(s); if(i<n) m=0; if(m<0) m=i; else m=n+m-1; if(m>i) m=i; p=m-n+1; if(p<0) p=0; for(i=n-1,j=0;i<m;i++,j++) t[j]=s[i]; t[p]=0; }

/*从文件中读取字符*/ int READ_STR(char *s,FILE *fp) { int i=0; if(!fp) return 0; if(fgets(s,10000,fp)) i=1; s[strlen(s)-1]=0; return i; }

/*字符串左靠齐*/ void MOVE_LEFT(char *d,char *s,int n) { int i,l; l=strlen(s); if(n>l) n=l; for(i=0;i<l;i++) *d++=*s++; *d=0; }

/*取左字符串*/ void LEFT(char *d,char *s,int n) { int i,l; i=0; l=strlen(s); if(n>l) n=l; for(i=0;i<n;i++) d[i]=s[i]; d[n]=0; }

/*向文件写数据*/ void WRITE_STR(char *s,FILE *fp) { char c=10; if(!fp) return; fputs(s,fp); fputc(c,fp); }

/*取右字符串*/ void RIGHT(char *dest,char *source,int num) { int i,j; if (num<1) num=0; num=strlen(source)-num; if (num<0) num=0; for(i=0,j=num;j<=strlen(source);i++,j++) dest[i]=source[j]; }

/*打开或关闭光标*/ void CURSOR(int on2off) { union REGS r; if (on2off!=OFF) on2off=10; r.h.ah=1; r.h.ch=3; r.h.cl=on2off; int86(16,&r,&r); }

/*喇叭发声*/ void SOUND(int frequency,int time) { int i; i=time*50; if (i>30000) i=30000; if (i<50) i=50; sound(frequency); MYDELAY(i); nosound(); }

/*时间延迟*/ void MYDELAY(long t) { time_t OldTime; long t0; t0=t/55; if (t0<1) t0=1; OldTime=clock(); while(clock()-OldTime<t0); }

/*正点报时*/ void REPORT_CLOCK(void) { int i; for(i=0;i<5;i++); { SOUND(500,10); MYDELAY(1000); } SOUND(800,10); }

/*写整数于文件中*/ void WRITE_INT(int num,FILE *p) { char s[20],a=10; if (!p) return; itoa(num,s,10); fputs(s,p); fputc(a,p); }

/*从文件中读取整数*/ int READ_INT(int *num,FILE *p) { int i; char s[30]=""; if (!p) return 0; if (fgets(s,10000,p)) { i=-1; s[strlen(s)-1]=0; *num=atoi(s); } else i=0; return i; }

/*报警 */ void WARN(void) { SOUND(300,1); SOUND(100,1); }

/*字符串右靠齐*/ void MOVE_RIGHT(char *s,int wide) { int i,l,n; l=strlen(s); n=wide-l; if (n>0) { for(i=l;i>-1;i--) s[i+n]=s[i]; for(i=0;i<n;i++) s[i]=32; } }

/*字符串居中*/ void MOVE_MIDDLE(char *s,int wide) { int i,l,n; l=strlen(s); if (wide>l) { wide=wide-1; n=wide/2; wide=wide-n; for(i=l;i>-1;i--) s[i+n]=s[i]; for(i=0;i<n;i++) s[i]=32; for(i=0;i<wide;i++) s[l+n+i]=32; s[l+n+i]=0; } }

/*删除子字符串*/ void Delete_SubString(char *source,int start,int num) { int i,l; l=strlen(source); if (num>l-start+1||num==-1) num=l-start+1; if (start<1||start>1) return; for(i=start;i<l-num+2;i++) source[i-1]=source[i+num-1]; }

/*查找指定字符串*/ int INSTR(int n,char *source,char *dest) { int i,j,k1,k2,p; int start=0; if (n==0) n=1; k1=strlen(source); k2=strlen(dest); if (n<0) { char s[100]; n=-n; MID(s,source,n,k2); if (strcmp(s,dest)) return 0; return n; } if (k1-n+1<k2) return start; for(i=n-1;i<k1;i++) { p=0; for(j=0;j<k2;j++) if (source[i+j]!=dest[j]) break; else p++; if (p==k2) { start=i+1; break; } } return start; }

/*产生空格*/ void SPACE(char *s,int n) { int i; if (n<0) n=0; for(i=0;i<n;i++) *s++=32; *s=0; }

/*产生字符串*/ void STRING(int n,char *s1,char *s2) { int i; if (n<0) n=0; s1[0]=0; for(i=1;i<=n;i++) strcat(s1,s2); }

/*砍掉字符串左边空格*/ void CUT_LEFT_SPACE(char *s) { int i,j,k=0; i=strlen(s)+1; for(j=0;j<i;j++) if (s[j]!=' ') break; for(k=0;j<i;k++,j++) s[k]=s[j]; }

/*砍掉字符串右边空格*/ void CUT_RIGHT_SPACE(char *s) { int i,j; i=strlen(s)-1; for(j=i;j>-1;j--) if (s[j]!=' ') break; s[j+1]=0; }

/*显示一个字符串*/ void DISPLAY(char *s) { union REGS regs; int color,x,y; x=wherex(); y=wherey(); color=16*bjys+qjys; while(*s) { if(x>80) break; regs.h.ah=9; regs.h.al=*s; regs.h.bh=0; regs.h.bl=color; regs.x.cx=1; /*显示的次数,不改变光标位置*/ int86(16,?s,?s); x++; if(x>80) { x=1; y++; if(y>25) y=25; } gotoxy(x,y); s++; } }

/*定义屏幕颜色*/ void COLOR(int ForeColor,int BackColor) { if(ForeColor<0||ForeColor>15) return; if(BackColor<0||BackColor>15) return; qjys=ForeColor; bjys=BackColor; }

/*显示提示窗口*/ void quit_YesNo(char *s1,char *s2) { char buffer[2000],jx; gettext(30,8,76,16,buffer); textbackground(3); CLSXY(8,32,9,30,6); CLSXY(4,30,8,30,6); COLOR(15,4); gotoxy(35,10); DISPLAY(s1); gotoxy(35,12); DISPLAY(s2); gotoxy(35+strlen(s2)+1,12); jx=getch(); puttext(30,8,76,16,buffer); if (jx=='n'||jx=='N') return; textbackground(0); textcolor(15); clrscr(); CURSOR(ON); exit(0); }

搜索更多相关主题的帖子: 技巧 转帖 
2004-12-04 11:38
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
楼上文章是很久以前存在机子里的,最近想删掉一些,删之前拿上来分享。
2004-12-04 11:39
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
[转帖]编程设置开机密码

#include "conio.h" #include "string.h" #include "stdio.h" int gb=0;

void error() {window(12,10,68,10); textbackground(15); textcolor(132); clrscr(); cprintf("file or system error! you can't enter the system!!!"); while(1); /*若有错误就进入死循环*/ }

/*查看autoexec.bat文件里有没有引用这个密码程序,没有就添加进去*/

void look() {FILE *fauto; /*指向autoexec.bat的文件指针*/ FILE *fbak; /*用来指向hecfback的文件指针*/ char *pass="c:\\windows\\password.exe"; /*本程序的位置*/ char a[25],ch; char *au="autoexec.bat",*bname="hecfback.^^^"; /*hecfback是autoexec.bat 的备份*/ setdisk(2); /*设置当前盘为C盘*/ chdir("\\"); /*设置当前目录为根目录*/ fauto=fopen(au,"r+"); /*以读写方式打开autoexec.bat文件*/ if (fauto==NULL)/*若不存在就新建一个autoexec.bat文件*/ {fauto=fopen(au,"w+"); if (fauto==NULL) error();}/*若新建失败就调用error()函数*/ fread(a,23,1,fauto); /*读取autoexec.bat前23各字符并存入a数组中*/ a[23]='\0'; /*把a数组的第24个位置添加结束符'\0' */

if (strcmp(a,pass)==0) /*若读取的a数组和pass指针一样就关闭文件,表示下次启动计算机会运行该程序,不然就添加*/ fclose(fauto); else {fbak=fopen(bname,"w+"); /*新建一个hecfback.^^^文件,用来保存autoexec.bat的文件内容*/ if (fbak==NULL) error(); /*失败就调用error()函数*/ fwrite(pass,23,1,fbak); /*把pass指针指向本程序路径的字符串写入hecfback.^^^文件里*/ fputc('\n\r',fbak); /*加上回车符*/ rewind(fauto); /*把autoexec.bat的文件指针指向文件头*/ while(!feof(fauto)) /* 当没有到达autoexec.bat文件尾时逐个读取出来并写入hecfback.^^^文件里,而刚才新建的文件最前面已写入了本程序的位置了 */ {ch=fgetc(fauto); /*读autoexec.bat文件的一个字节*/ fputc(ch,fbak);} /*向fbak指向的hecfback.^^^文件写入刚读出来的字节*/ rewind(fauto); /*把autoexec.bat的文件指针指向文件头*/ rewind(fbak); /*把hecfback.^^^文件指针指向文件头*/

/*把hecfback.^^^文件内容写入autoexec.bat内*/

while(!feof(fbak)) /*当没有到达hecfback.^^^文件尾时逐个读取出来并写入autoexec.bat文件里*/ {ch=fgetc(fbak); fputc(ch,fauto);} fclose(fauto); /*关闭文件*/ fclose(fbak); remove(bname); /*删除hecfback文件*/ } }

/*从ppp.^^^文件中读出密码*/ void readpass(char *pass) {FILE *fp; int i=0; char *p="88888888"; /*原始密码*/ setdisk(2); chdir("\\"); /*设置当前盘为C盘*/ chdir("c:\windows"); /*设置当前目录为c:\windows*/ fp=fopen("ppp.^^^","r+"); /*打开ppp.^^^文件*/ if (fp==NULL) /*如果不存在就新建一个,并把原始密码写进去*/ {fp=fopen("ppp.^^^","w+"); if (fp==NULL) error(); fwrite(p,strlen(p),1,fp); strcpy(pass,p); /*把形参pass设为原始密码*/ pass[8]='\0'; } /*最后一位以'\0'结尾*/ else {while(!feof(fp)) /*如果存在就把他读出来,存入pass中*/ {pass[i]=fgetc(fp); i++; } pass[i-1]='\0';} /*我也不太清楚为什么要减一,但这样才正确*/ fclose(fp); }

/*输入密码的函数*/ void inputpass(char *pass) {int n=0; /*控制密码个数*/ while(1) {pass[n]=getch();/*把输入的一个字符存入input中的第n个数组元素中*/ if (pass[n]==0) {pass[n]=getch(); if (pass[n]==94) gb=1; continue;} /*如果是控制键就把后面那一个字符吃掉,如果是ctrl+f1就把gb置1,用在pass函数里输入密码时的,并重新开始循环,注:输入控制键时,系统会给出两个字符的,第一个为0*/ if (n>23) {putchar(7); break;} /*若字符多于23个字符就结束本次输入,并发出一声响*/ if (pass[n]==13) break; /*如果是回车就结束*/ if (pass[n]>=32 && pass[n]<=122) /*若字符是数字或字母才算数*/ {putchar('*'); n++;} if (pass[n]==8) /*删除键*/ if (n>0)/*如果是删除键,且至少输入了一个字符就在屏幕上删除前一个*号,且input数组也前进一位*/ {cprintf("\b \b"); /*'\b'为光标在屏幕上前移一位,但并不删除前一位,所以用空格删除,再前一位*/ pass[n]='\0'; /*并把数组中的数据清0*/ n--;} /*密码个数也减一*/ } pass[n]='\0'; }

/*改变密码函数*/ void gbpass() {FILE *fp; int i; char a[25],b[25]; fp=fopen("ppp.^^^","r+"); /*打开ppp.^^^文件*/ if (fp==NULL) error(); for (i=0;i<40;i++) /*把文件里的内容清零*/ fputc('\0',fp); do{ window(10,12,70,12); textbackground(1); textcolor(15); clrscr(); cprintf("please input new password:"); inputpass(a); /*调用inputpass函数,输入a的值*/

window(10,14,70,14); textbackground(1); textcolor(15); clrscr(); cprintf("please input again:"); inputpass(b); /*输入b的值*/ if (strcmp(a,b)!=0) {window(10,16,20,16); textbackground(1); textcolor(15); clrscr(); cprintf("error!"); getch();} }/*如果a、b不等,提示error*/ while(strcmp(a,b));

rewind(fp); fwrite(a,strlen(a),1,fp); /*把密码写入ppp.^^^文件*/ fclose(fp); }

void pass() {char password[25]; char input[25]; /*输入密码的数组*/ while(1) {window(1,1,80,25); textbackground(0); textcolor(15); clrscr();/*清屏*/

readpass(password); window(20,12,60,12); textbackground(1); textcolor(15); clrscr(); cprintf("password:"); /*以蓝背景黑字画一个窗口,并写出password:提示*/ inputpass(input); if (strcmp(password,input)==0) /*输入完后,输入的密码和程序里的密码一样就通过,并退出本程序*/ {if (gb==1) gbpass(); break;} else /*若不一样就提示*/ {putchar(7); window(30,14,50,14); textbackground(15); textcolor(132); /*132为闪烁的字*/ clrscr(); cprintf("password error!"); getch();} } }

main() {look(); pass(); }

能够自己设置密码,方法是在输入密码回车前任何时候按一下ctrl+f1键,就行了,密码文件存放在c:\windows下的ppp.^^^里,是明文,你们可以改一下程序,改为暗文的,就是写时减一个数,读时再加一个数,但我没试。这个程序的缺点是程序文件只能放在c:\windows下,还有破解太容易,把autoexec.bat文件改一下就行了。

2004-12-04 11:40
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
[转帖]编程修养

[attach]1221[/attach]

2004-12-04 11:48
78838698
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2004-11-14
收藏
得分:0 
谢谢楼主

2004-12-05 11:53
xy3zhong
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-12-6
收藏
得分:0 

复制粘贴!

2004-12-06 15:07
梦凡
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2004-12-7
收藏
得分:0 
好东西啊谢谢楼主了!!!
2004-12-07 15:54
快速回复:[转帖]编程技巧汇萃
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016910 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved