1、c语言编程技巧c语言编程技巧/*从键盘中读取字符 功能:按下普通键时,返回其ASCII码 扫描码CODE=0*/ int INKEY(int *code) int m; while(!bioskey(1)/*可加入无按键时代码*/; *code=bioskey(0); m=*code*255; if(!m) m=*code8; *code=*code&255; return m; /*获取机器日期*/ int DATE(char *s,char type) char dat30; int num; struct tm *tblock; time_t t; t=time(NULL); tbloc
2、k=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; retur
3、n num; /*将浮点数转化为字符串*/ /* 参数说明 data:需转换的浮点数;s:输出字符串;len:转换后的长度*/ void f_to_s(double data,char *s,int len) int dec,sign,i; char *s1,s2100,s3100; s1=0; s20=0; s30=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,s
4、2); 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&dec0) strcpy(s,+0.); for(i=1;i=fabs(dec);i+) strcat(s,0); strcat(s,s1); if (sig
5、n&dec0) strcpy(s,-0.); for(i=1;ilen) slen=0; /*清除屏幕*/ void CLSXY(int color,int x,int y,int xl,int yl) int x1,y1; union REGS r; if(x1|y25|x180) 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 colo
6、r,int back_color,int y,int x) static char oldtime9=; char newtime9; if(y1|x1) 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 PRI
7、NT_KJ(int x,int y,int wide,int high) int i; for(i=x;i 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 gotoxy(i,y+high); cprintf( ); for(i=y+1;i gotoxy(x,i); cprintf( ); for(i=y+1;i gotoxy(x+w
8、ide,i); cprintf( ); /*砍掉字符串中所有空格*/ void CUT_ALL_SPC(char *s) int i,n; char d10000; n=0; for(i=0;iif(si!=32) dn=si; n+; dn=0; strcpy(s,d); /*取子字符串*/ void MID(char *s,char *t,int n,int m) int i,j,p; if(n1) n=1; i=strlen(s); if(iif(mi) m=i; p=m-n+1; if(pl) n=l; for(i=0;i*d+=*s+; *d=0; /*取左字符串*/ void LE
9、FT(char *d,char *s,int n) int i,l; i=0; l=strlen(s); if(nl) n=l; for(i=0;idi=si; dn=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 (num1) num=0; num=strlen(source)-num; if (num0) nu
10、m=0; for(i=0,j=num;j30000) i=30000; if (i50) i=50; sound(frequency); MYDELAY(i); nosound(); /*时间延迟*/ void MYDELAY(long t) time_t OldTime; long t0; t0=t/55; if (t01) t0=1; OldTime=clock(); while(clock()-OldTime /*正点报时*/ void REPORT_CLOCK(void) int i; for(i=0;i0) for(i=l;i-1;i-) si+n=si; for(i=0;i /*字
11、符串居中*/ void MOVE_MIDDLE(char *s,int wide) int i,l,n; l=strlen(s); if (widel) wide=wide-1; n=wide/2; wide=wide-n; for(i=l;i-1;i-) si+n=si; for(i=0;ifor(i=0;isl+n+i=0; /*删除子字符串*/ void Delete_SubString(char *source,int start,int num) int i,l; l=strlen(source); if (numl-start+1|num=-1) num=l-start+1; if
12、 (start1) return; for(i=start;isourcei-1=sourcei+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 (n0) char s100; n=-n; MID(s,source,n,k2); if (strcmp(s,dest) return 0; return n; if (k1-n+1for(i=n-1;i p=0;
13、for(j=0;jif (sourcei+j!=destj) break; else p+; if (p=k2) start=i+1; break; return start; /*产生空格*/ void SPACE(char *s,int n) int i; if (n0) n=0; for(i=0;i*s=0; /*产生字符串*/ void STRING(int n,char *s1,char *s2) int i; if (n0) n=0; s10=0; for(i=1;i-1;j-) if (sj!= ) break; sj+1=0; /*显示一个字符串*/ void DISPLAY(
14、char *s) union REGS regs; int color,x,y; x=wherex(); y=wherey(); color=16*bjys+qjys; while(*s) if(x80) 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(x80) x=1; y+; if(y25) y=25; gotoxy(x,y); s+; /*定义屏幕颜色*/ void COLOR(int ForeCol
15、or,int BackColor) if(ForeColor15) return; if(BackColor15) return; qjys=ForeColor; bjys=BackColor; /*显示提示窗口*/ void quit_YesNo(char *s1,char *s2) char buffer2000,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);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1