编程函数集,详细内容如下:
读键盘扫描码
获取机器日期
将浮点数转化为字符串
清除屏幕
显示时间
打印一个矩形
砍掉字符串中所有空格
取子字符串
从文件中读取字符
字符串左靠齐
取左字符串
向文件写数据
取右字符串
打开或关闭光标
喇叭发声
时间延迟
正点报时
写整数于文件中
从文件中读取整数
报警
字符串右靠齐
字符串居中
删除子字符串
查找指定字符串
产生空格
产生字符串
砍掉字符串左边空格
砍掉字符串右边空格
显示一个字符串
定义屏幕颜色
显示提示窗口显示警告窗口
得到文件长度
窗口滚屏
扫描键盘
插入字符串
检测磁盘是否准备就绪
检测磁盘是否写保护
修改文件的某一行
成批拷贝文件
拷贝一个文件
建立目录
得到目录
得到文件名
任意两个正整数相加(<80位)
任意两个正整数相乘
注意:该函数集省略了不少TC标准头文件,读者使用时要自行添加。而且由于该函数集内部函数间有的有调用关系,读者拆卸时要谨慎。
/*编程技巧荟萃*/
/*从键盘中读取字符 功能:按下普通键时,返回其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;ii) m=i;
p=m-n+1;
if(p<0) p=0;
for(i=n-1,j=0;il) n=l;
for(i=0;il) n=l;
for(i=0;i30000) 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()-OldTime0)
{
for(i=l;i>-1;i--) s[i+n]=s;
for(i=0;il)
{
wide=wide-1;
n=wide/2;
wide=wide-n;
for(i=l;i>-1;i--) s[i+n]=s;
for(i=0;il-start+1||num==-1) num=l-start+1;
if (start<1||start>1) return;
for(i=start;i-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);
}
/*显示警告窗口*/
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,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,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,ffblk.ff_name);
while(!done)
{
done=findnext(&ffblk);
if (!done)
{
i++;
strcpy(filename,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=80) return;
if (strlen(numB)>=80) return;
for(i=0;i=10)
{
jw=1;
c=c-10;
}
else jw=0;
itoa(c,s,10);
num=s[0];
}
if (jw==1) {num='1';num[i+1]=0;}
else num=0;
j=strlen(num);
for(i=0;i=80) return;
if (strlen(numB)>=80) return;
for(i=0;i