上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
函数名: harderr
作者:未知 申领版权
2010年12月12日 共有 1925 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    函数名: harderr
    功  能: 建立一个硬件错误处理程序
    用  法: void harderr(int (*fptr)());
    程序例:
    /*This program will trap disk errors and prompt
    the user for action. Try running it with no
    disk in drive A: to invoke its functions.*/
    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>
    #define IGNORE  0
    #define RETRY   1
    #define ABORT   2
    int buf[500];
    /*define the error messages for trapping disk problems*/
    static char *err_msg[] = {
    "write protect",
    "unknown unit",
    "drive not ready",
    "unknown command",
    "data error (CRC)",
    "bad request",
    "seek error",
    "unknown media type",
    "sector not found",
    "printer out of paper",
    "write fault",
    "read fault",
    "general failure",
    "reserved",
    "reserved",
    "invalid disk change"
    };
    error_win(char *msg)
    {
    int retval;
    cputs(msg);
    /*prompt for user to press a key to abort, retry, ignore*/
    while(1)
    {
    retval= getch();
    if (retval == 'a' || retval == 'A')
    {
    retval = ABORT;
    break;
    }
    if (retval == 'r' || retval == 'R')
    {
    retval = RETRY;
    break;
    }
    if (retval == 'i' || retval == 'I')
    {
    retval = IGNORE;
    break;
    }
    }
    return(retval);
    }
    /*pragma warn -par reduces warnings which occur
    due to the non use of the parameters errval,
    bp and si to the handler.*/
    #pragma warn -par
    int handler(int errval,int ax,int bp,int si)
    {
    static char msg[80];
    unsigned di;
    int drive;
    int errorno;
    di= _DI;
    /*if this is not a disk error then it was
    another device having trouble*/
    if (ax < 0)
    {
    /* report the error */
    error_win("Device error");
    /* and return to the program directly requesting abort */
    hardretn(ABORT);
    }
    /* otherwise it was a disk error */
    drive = ax & 0x00FF;
    errorno = di & 0x00FF;
    /* report which error it was */
    sprintf(msg, "Error: %s on drive %c\r\nA)bort, R)etry, I)gnore: ",
    err_msg[errorno], 'A' drive);
    /*
    return to the program via dos interrupt 0x23 with abort, retry,
    or ignore as input by the user.
    */
    hardresume(error_win(msg));
    return ABORT;
    }
    #pragma warn par
    int main(void)
    {
    /*
    install our handler on the hardware problem interrupt
    */
    harderr(handler);
    clrscr();
    printf("Make sure there is no disk in drive A:\n");
    printf("Press any key ....\n");
    getch();
    printf("Trying to access drive A:\n");
    printf("fopen returned %p\n",fopen("A:temp.dat", "w"));
    return 0;
    }
    
    
    函数名: hardresume
    功  能: 硬件错误处理函数
    用  法: void hardresume(int rescode);
    程序例:
    
    /* This program will trap disk errors and prompt the user for action. */
    /* Try running it with no disk in drive A: to invoke its functions    */
    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>
    #define IGNORE  0
    #define RETRY   1
    #define ABORT   2
    int buf[500];
    /* define the error messages for trapping disk problems */
    static char *err_msg[] = {
    "write protect",
    "unknown unit",
    "drive not ready",
    "unknown command",
    "data error (CRC)",
    "bad request",
    "seek error",
    "unknown media type",
    "sector not found",
    "printer out of paper",
    "write fault",
    "read fault",
    "general failure",
    "reserved",
    "reserved",
    "invalid disk change"
    };
    error_win(char *msg)
    {
    int retval;
    cputs(msg);
    /* prompt for user to press a key to abort, retry, ignore */
    while(1)
    {
    retval= getch();
    if (retval == 'a' || retval == 'A')
    {
    retval = ABORT;
    break;
    }
    if (retval == 'r' || retval == 'R')
    {
    retval = RETRY;
    break;
    }
    if (retval == 'i' || retval == 'I')
    {
    retval = IGNORE;
    break;
    }
    }
    return(retval);
    }
    /* pragma warn -par reduces warnings which occur due to the non use */
    /* of the parameters errval, bp and si to the handler.              */
    #pragma warn -par
    int handler(int errval,int ax,int bp,int si)
    {
    static char msg[80];
    unsigned di;
    int drive;
    int errorno;
    di= _DI;
    /* if this is not a disk error then it was another device having trouble */
    if (ax < 0)
    {
    /* report the error */
    error_win("Device error");
    /* and return to the program directly
    requesting abort */
    hardretn(ABORT);
    }
    /* otherwise it was a disk error */
    drive = ax & 0x00FF;
    errorno = di & 0x00FF;
    /* report which error it was */
    sprintf(msg, "Error: %s on drive %c\r\nA)bort, R)etry, I)gnore: ",
    err_msg[errorno], 'A' drive);
    /* return to the program via dos interrupt 0x23 with abort, retry */
    /* or ignore as input by the user.  */
    hardresume(error_win(msg));
    return ABORT;
    }
    #pragma warn par
    int main(void)
    {
    /* install our handler on the hardware problem interrupt */
    harderr(handler);
    clrscr();
    printf("Make sure there is no disk in drive A:\n");
    printf("Press any key ....\n");
    getch();
    printf("Trying to access drive A:\n");
    printf("fopen returned %p\n",fopen("A:temp.dat", "w"));
    return 0;
    }
    
    
    函数名: highvideo
    功  能: 选择高亮度文本字符
    用  法: void highvideo(void);
    程序例:
    #include <conio.h>
    int main(void)
    {
    clrscr();
    lowvideo();
    cprintf("Low Intensity text\r\n");
    highvideo();
    gotoxy(1,2);
    cprintf("High Intensity Text\r\n");
    return 0;
    }
    
    
    函数名: hypot
    功  能: 计算直角三角形的斜边长
    用  法: double hypot(double x, double y);
    程序例:
    #include <stdio.h>
    #include <math.h>
    int main(void)
    {
    double result;
    double x = 3.0;
    double y = 4.0;
    result = hypot(x, y);
    printf("The hypotenuse is: %lf\n", result);
    return 0;
    }
    

 

相关新闻

欢迎太学新学友
第1篇 计算机的基础知识
光纤
从一个小气泡说起
化学平衡
事务全攻略
启发式教学的理解
C语言复习习题-程序改错
C语言复习习题-简单程序
城市地域功能分区

您可能对这些感兴趣  

第7讲 综合分析BIM在运用与推广中的障碍问题
考核学生质量的困难
日本福岛核电站事故初步分析
论科技异化与科技人化
中国科技计划项目管理现状与对策
财政科技资金的审计重点和内容
软科学研究机构在政府决策中的功效、困境及对策研究
打造超级DOS系统(下)
DOS命令基础应用(6)
打造超级DOS系统(上)

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》