点击这里给我发消息 点击这里给我发消息

C语言编程技巧汇萃(下)

添加时间:2013-12-7
    相关阅读: Access C语言
副标题#e#

      /*显示警告窗口*/
    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++)
    WR99vE_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];

#p#副标题#e#

 

    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 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==16ffblk.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 if (!isdigit(numA[i])) return; /*如果非法返回结果为空*/
    for(i=0;i if (!isdigit(numB[i])) return;
    if (strlen(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 numC[Alen-i-1]=numC[Blen-i-1];
    for(i=0;i numC[i]='0';
    jw=0; /*进位*/
    for(i=0;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);

#p#副标题#e#

 

    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
    {
    ch=num[i];
    num[i]=num[j-i-1]; /*将num反转*/
    num[j-i-1]=ch;
    }
    strcpy(result,num);
    return; /*返回相加结果*/
    }

    /*任意两个正整数相乘*/
    /*参数说明:numA,numB 分别为乘数和被乘数,resultm存放积*/

相关C语言编程技巧汇萃(下)

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册