﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-       [HORSETAIL]-文章分类-乱七八糟</title><link>http://www.cppblog.com/horsetail/category/3491.html</link><description>花儿,总会有谢的时候</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 23:21:18 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 23:21:18 GMT</pubDate><ttl>60</ttl><item><title>C/C++ 头文件一览</title><link>http://www.cppblog.com/horsetail/articles/18346.html</link><dc:creator>[HORSETAIL]</dc:creator><author>[HORSETAIL]</author><pubDate>Sun, 04 Feb 2007 16:27:00 GMT</pubDate><guid>http://www.cppblog.com/horsetail/articles/18346.html</guid><wfw:comment>http://www.cppblog.com/horsetail/comments/18346.html</wfw:comment><comments>http://www.cppblog.com/horsetail/articles/18346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/horsetail/comments/commentRss/18346.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/horsetail/services/trackbacks/18346.html</trackback:ping><description><![CDATA[
		<p>C/C++ 头文件一览</p>
		<p>C、传统 C++：</p>
		<p>#include &lt;assert.h&gt;　　　　//设定插入点<br />#include &lt;ctype.h&gt;　　　　 //字符处理<br />#include &lt;errno.h&gt;　　　　 //定义错误码<br />#include &lt;float.h&gt;　　　　 //浮点数处理<br />#include &lt;fstream.h&gt;　　　 //文件输入／输出<br />#include &lt;iomanip.h&gt;　　　 //参数化输入／输出<br />#include &lt;iostream.h&gt;　　　//数据流输入／输出<br />#include &lt;limits.h&gt;　　　　//定义各种数据类型最值常量<br />#include &lt;locale.h&gt;　　　　//定义本地化函数<br />#include &lt;math.h&gt;　　　　　//定义数学函数<br />#include &lt;stdio.h&gt;　　　　 //定义输入／输出函数<br />#include &lt;stdlib.h&gt;　　　　//定义杂项函数及内存分配函数<br />#include &lt;string.h&gt;　　　　//字符串处理<br />#include &lt;strstrea.h&gt;　　　//基于数组的输入／输出<br />#include &lt;time.h&gt;　　　　　//定义关于时间的函数<br />#include &lt;wchar.h&gt;　　　　 //宽字符处理及输入／输出<br />#include &lt;wctype.h&gt;　　　　//宽字符掷?br /&gt; <br />//////////////////////////////////////////////////////////////////////////</p>
		<p>标准 C++　（同上的不再注释）：</p>
		<p>#include &lt;algorithm&gt;　　　 //STL 通用算法<br />#include &lt;bitset&gt;　　　　　//STL 位集容器<br />#include &lt;cctype&gt;<br />#include &lt;cerrno&gt;<br />#include &lt;clocale&gt;<br />#include &lt;cmath&gt;<br />#include &lt;complex&gt;　　　　 //复数类<br />#include &lt;cstdio&gt;<br />#include &lt;cstdlib&gt;<br />#include &lt;cstring&gt;<br />#include &lt;ctime&gt;<br />#include &lt;deque&gt;　　　　　 //STL 双端队列容器<br />#include &lt;exception&gt;　　　 //异常处理类<br />#include &lt;fstream&gt;<br />#include &lt;functional&gt;　　　//STL 定义运算函数（代替运算符）<br />#include &lt;limits&gt;<br />#include &lt;list&gt;　　　　　　//STL 线性列表容器<br />#include &lt;map&gt;　　　　　　 //STL 映射容器<br />#include &lt;iomanip&gt;<br />#include &lt;ios&gt;　　　　　　 //基本输入／输出支持<br />#include &lt;iosfwd&gt;　　　　　//输入／输出系统使用的前置声明<br />#include &lt;iostream&gt;<br />#include &lt;istream&gt;　　　　 //基本输入流<br />#include &lt;ostream&gt;　　　　 //基本输出流<br />#include &lt;queue&gt;　　　　　 //STL 队列容器<br />#include &lt;set&gt;　　　　　　 //STL 集合容器<br />#include &lt;sstream&gt;　　　　 //基于字符串的流<br />#include &lt;stack&gt;　　　　　 //STL 堆栈容器　　　　<br />#include &lt;stdexcept&gt;　　　 //标准异常类<br />#include &lt;streambuf&gt;　　　 //底层输入／输出支持<br />#include &lt;string&gt;　　　　　//字符串类<br />#include &lt;utility&gt;　　　　 //STL 通用模板类<br />#include &lt;vector&gt;　　　　　//STL 动态数组容器<br />#include &lt;cwchar&gt;<br />#include &lt;cwctype&gt;</p>
		<p>using namespace std;</p>
		<p>//////////////////////////////////////////////////////////////////////////</p>
		<p>C99 增加：</p>
		<p>#include &lt;complex.h&gt;　　 //复数处理<br />#include &lt;fenv.h&gt;　　　　//浮点环境<br />#include &lt;inttypes.h&gt;　　//整数格式转换<br />#include &lt;stdbool.h&gt;　　 //布尔环境<br />#include &lt;stdint.h&gt;　　　//整型环境<br />#include &lt;tgmath.h&gt;　　　//通用类型数学宏</p>
<img src ="http://www.cppblog.com/horsetail/aggbug/18346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/horsetail/" target="_blank">[HORSETAIL]</a> 2007-02-05 00:27 <a href="http://www.cppblog.com/horsetail/articles/18346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>公共基础知识大纲</title><link>http://www.cppblog.com/horsetail/articles/18347.html</link><dc:creator>[HORSETAIL]</dc:creator><author>[HORSETAIL]</author><pubDate>Sun, 04 Feb 2007 16:27:00 GMT</pubDate><guid>http://www.cppblog.com/horsetail/articles/18347.html</guid><wfw:comment>http://www.cppblog.com/horsetail/comments/18347.html</wfw:comment><comments>http://www.cppblog.com/horsetail/articles/18347.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/horsetail/comments/commentRss/18347.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/horsetail/services/trackbacks/18347.html</trackback:ping><description><![CDATA[
		<p>公共基础知识 大纲</p>
		<p>公共基础知识 <br />基本要求 <br />1.掌握算法的基本概念。<br />2.掌握基本数据结构及其操作。<br />3.掌握基本排序和查找算法。<br />4.掌握逐步求精的结构化程序设计方法。<br />5.掌握软件工程的基本方法，具有初步应用相关技术进行软件开发的能力。<br />6.掌握数据库的基本知识，了解关系数据库的设计。 <br />考试内容<br />一、基本数据结构与算法<br />1.算法的基本概念；算法复杂度的概念和意义（时间复杂度与空间复杂度）。<br />2.数据结构的定义；数据的逻辑结构与存储结构；数据结构的图形表示；线性结构与非线性结构的概念。<br />3.线性表的定义；线性表的顺序存储结构及其插入与删除运算。<br />4.栈和队列的定义；栈和队列的顺序存储结构及其基本运算。<br />5.线性单链表、双向链表与循环链表的结构及其基本运算。<br />6.树的基本概念；二叉树的定义及其存储结构；二叉树的前序、中序和后序遍历。<br />7.顺序查找与二分法查找算法；基本排序算法（交换类排序，选择类排序，插入类排序）。<br />二、程序设计基础<br />1.程序设计方法与风格。<br />2.结构化程序设计。<br />3.面向对象的程序设计方法，对象，方法，属性及继承与多态性。<br />三、软件工程基础<br />1.软件工程基本概念，软件生命周期概念，软件工具与软件开发环境。<br />2.结构化分析方法，数据流图，数据字典，软件需求规格说明书。<br />3.结构化设计方法，总体设计与详细设计。<br />4.软件测试的方法，白盒测试与黑盒测试，测试用例设计，软件测试的实施，单元测试、集成测试和系统测试。<br />5.程序的调试，静态调试与动态调试。<br />四、数据库设计基础<br />1.数据库的基本概念：数据库，数据库管理系统，数据库系统。<br />2.数据模型，实体联系模型及E-R图，从E-R图导出关系数据模型。<br />3.关系代数运算，包括集合运算及选择、投影、连接运算，数据库规范化理论。<br />4.数据库设计方法和步骤：需求分析、概念设计、逻辑设计和物理设计的相关策略。<br />考试方式<br />公共基础知识有10道选择题和5道填空题共三十分。</p>
<img src ="http://www.cppblog.com/horsetail/aggbug/18347.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/horsetail/" target="_blank">[HORSETAIL]</a> 2007-02-05 00:27 <a href="http://www.cppblog.com/horsetail/articles/18347.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>turbo c 2.0 函数中文说明大全</title><link>http://www.cppblog.com/horsetail/articles/17850.html</link><dc:creator>[HORSETAIL]</dc:creator><author>[HORSETAIL]</author><pubDate>Sat, 20 Jan 2007 15:11:00 GMT</pubDate><guid>http://www.cppblog.com/horsetail/articles/17850.html</guid><wfw:comment>http://www.cppblog.com/horsetail/comments/17850.html</wfw:comment><comments>http://www.cppblog.com/horsetail/articles/17850.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/horsetail/comments/commentRss/17850.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/horsetail/services/trackbacks/17850.html</trackback:ping><description><![CDATA[
		<p>                        Turbo C 2.0 函数中文说明大全</p>
		<p>                                作者:胡颖卓</p>
		<p>分类函数,所在函数库为ctype.h<br />int isalpha(int ch)  若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0<br />int isalnum(int ch)  若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')<br />                     返回非0值,否则返回0<br />int isascii(int ch)  若ch是字符(ASCII码中的0-127)返回非0值,否则返回0<br />int iscntrl(int ch)  若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)<br />                     返回非0值,否则返回0<br />int isdigit(int ch)  若ch是数字('0'-'9')返回非0值,否则返回0<br />int isgraph(int ch)  若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0<br />int islower(int ch)  若ch是小写字母('a'-'z')返回非0值,否则返回0<br />int isprint(int ch)  若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0<br />int ispunct(int ch)  若ch是标点字符(0x00-0x1F)返回非0值,否则返回0<br />int isspace(int ch)  若ch是空格(' '),水平制表符('\t'),回车符('\r'),<br />                     走纸换行('\f'),垂直制表符('\v'),换行符('\n')<br />                     返回非0值,否则返回0<br />int isupper(int ch)  若ch是大写字母('A'-'Z')返回非0值,否则返回0<br />int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值,<br />                     否则返回0<br />int tolower(int ch)  若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')<br />int toupper(int ch)  若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')</p>
		<p>-----------------------------------------------------------------------------------------------------------------------------</p>
		<p>数学函数,所在函数库为math.h、stdlib.h、string.h、float.h<br />int      abs(int i)                    返回整型参数i的绝对值<br />double  cabs(struct complex znum)      返回复数znum的绝对值<br />double  fabs(double x)                 返回双精度参数x的绝对值<br />long    labs(long n)                   返回长整型参数n的绝对值<br />double   exp(double x)                 返回指数函数ex的值<br />double frexp(double value,int *eptr)   返回value=x*2n中x的值,n存贮在eptr中<br />double ldexp(double value,int exp);    返回value*2exp的值<br />double   log(double x)                 返回logex的值<br />double log10(double x)                 返回log10x的值<br />double   pow(double x,double y)        返回xy的值<br />double pow10(int p)                    返回10p的值<br />double  sqrt(double x)                 返回x的开方<br />double  acos(double x)                 返回x的反余弦cos-1(x)值,x为弧度<br />double  asin(double x)                 返回x的反正弦sin-1(x)值,x为弧度<br />double  atan(double x)                 返回x的反正切tan-1(x)值,x为弧度<br />double atan2(double y,double x)        返回y/x的反正切tan-1(x)值,y的x为弧度<br />double   cos(double x)                 返回x的余弦cos(x)值,x为弧度<br />double   sin(double x)                 返回x的正弦sin(x)值,x为弧度<br />double   tan(double x)                 返回x的正切tan(x)值,x为弧度<br />double  cosh(double x)                 返回x的双曲余弦cosh(x)值,x为弧度<br />double  sinh(double x)                 返回x的双曲正弦sinh(x)值,x为弧度<br />double  tanh(double x)                 返回x的双曲正切tanh(x)值,x为弧度<br />double hypot(double x,double y)        返回直角三角形斜边的长度(z),<br />                                       x和y为直角边的长度,z2=x2+y2<br />double  ceil(double x)                 返回不小于x的最小整数<br />double floor(double x)                 返回不大于x的最大整数<br />void   srand(unsigned seed)            初始化随机数发生器<br />int     rand()                         产生一个随机数并返回这个数<br />double  poly(double x,int n,double c[])从参数产生一个多项式<br />double  modf(double value,double *iptr)将双精度数value分解成尾数和阶<br />double  fmod(double x,double y)        返回x/y的余数<br />double frexp(double value,int *eptr)   将双精度数value分成尾数和阶<br />double  atof(char *nptr)               将字符串nptr转换成浮点数并返回这个浮点数<br />double  atoi(char *nptr)               将字符串nptr转换成整数并返回这个整数<br />double  atol(char *nptr)               将字符串nptr转换成长整数并返回这个整数<br />char   *ecvt(double value,int ndigit,int *decpt,int *sign)<br />         将浮点数value转换成字符串并返回该字符串<br />char   *fcvt(double value,int ndigit,int *decpt,int *sign)<br />         将浮点数value转换成字符串并返回该字符串<br />char   *gcvt(double value,int ndigit,char *buf)<br />         将数value转换成字符串并存于buf中,并返回buf的指针<br />char  *ultoa(unsigned long value,char *string,int radix)<br />         将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数<br />char   *ltoa(long value,char *string,int radix)<br />         将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数<br />char   *itoa(int value,char *string,int radix)<br />         将整数value转换成字符串存入string,radix为转换时所用基数<br />double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0<br />int    atoi(char *nptr) 将字符串nptr转换成整型数,  并返回这个数,错误返回0<br />long   atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0<br />double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,<br />long   strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,<br />                                               并返回这个数,<br />int          matherr(struct exception *e)<br />              用户修改数学错误返回信息函数(没有必要使用)<br />double       _matherr(_mexcep why,char *fun,double *arg1p,<br />                      double *arg2p,double retval)<br />                用户修改数学错误返回信息函数(没有必要使用)<br />unsigned int _clear87()   清除浮点状态字并返回原来的浮点状态<br />void         _fpreset()   重新初使化浮点数学程序包<br />unsigned int _status87()  返回浮点状态字</p>
		<p>--------------------------------------------------------------------------------------------------------------------------------------</p>
		<p>目录函数,所在函数库为dir.h、dos.h<br />int     chdir(char *path) 使指定的目录path（如:"C:\\WPS"）变成当前的工作目录,成<br />         功返回0<br />int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功<br />     返回0<br />     pathname为指定的目录名和文件名,如"C:\\WPS\\TXT"<br />     ffblk为指定的保存文件信息的一个结构,定义如下:<br />    ┏━━━━━━━━━━━━━━━━━━┓<br />    ┃struct ffblk                        ┃<br />    ┃{                                   ┃<br />    ┃ char ff_reserved[21]; /*DOS保留字*/┃<br />    ┃ char ff_attrib;       /*文件属性*/ ┃<br />    ┃ int  ff_ftime;        /*文件时间*/ ┃<br />    ┃ int  ff_fdate;        /*文件日期*/ ┃<br />    ┃ long ff_fsize;        /*文件长度*/ ┃<br />    ┃ char ff_name[13];     /*文件名*/   ┃<br />    ┃}                                   ┃<br />    ┗━━━━━━━━━━━━━━━━━━┛<br />     attrib为文件属性,由以下字符代表<br />    ┏━━━━━━━━━┳━━━━━━━━┓<br />    ┃FA_RDONLY 只读文件┃FA_LABEL  卷标号┃<br />    ┃FA_HIDDEN 隐藏文件┃FA_DIREC  目录  ┃<br />    ┃FA_SYSTEM 系统文件┃FA_ARCH   档案  ┃<br />    ┗━━━━━━━━━┻━━━━━━━━┛<br />    例:<br />    struct ffblk ff;<br />    findfirst("*.wps",&amp;ff,FA_RDONLY);</p>
		<p>int   findnext(struct ffblk *ffblk)      取匹配finddirst的文件,成功返回0<br />void  fumerge(char *path,char *drive,char *dir,char *name,char *ext)<br />       此函数通过盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),<br />       文件名name(TC、WPS等),扩展名ext(.EXE、.COM等)组成一个文件名<br />       存与path中.<br />int   fnsplit(char *path,char *drive,char *dir,char *name,char *ext)<br />       此函数将文件名path分解成盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),<br />       文件名name(TC、WPS等),扩展名ext(.EXE、.COM等),并分别存入相应的变量中.<br />int   getcurdir(int drive,char *direc) 此函数返回指定驱动器的当前工作目录名称<br />        drive 指定的驱动器(0=当前,1=A,2=B,3=C等)<br />        direc 保存指定驱动器当前工作路径的变量      成功返回0<br />char *getcwd(char *buf,iint n) 此函数取当前工作目录并存入buf中,直到n个字<br />      节长为为止.错误返回NULL<br />int   getdisk() 取当前正在使用的驱动器,返回一个整数(0=A,1=B,2=C等)<br />int   setdisk(int drive) 设置要使用的驱动器drive(0=A,1=B,2=C等),<br />       返回可使用驱动器总数<br />int   mkdir(char *pathname)  建立一个新的目录pathname,成功返回0<br />int   rmdir(char *pathname)  删除一个目录pathname,成功返回0<br />char *mktemp(char *template) 构造一个当前目录上没有的文件名并存于template中<br />char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路径,<br />      ,此函数使用DOS的PATH变量,未找到文件返回NULL</p>
		<p>==========================================================================</p>
		<p>进程函数,所在函数库为stdlib.h、process.h<br />void  abort() 此函数通过调用具有出口代码3的_exit写一个终止信息于stderr，<br />        并异常终止程序。无返回值<br />int   exec…装入和运行其它程序<br />int   execl(  char *pathname,char *arg0,char *arg1,…,char *argn,NULL)<br />int   execle( char *pathname,char *arg0,char *arg1,…,<br />              char *argn,NULL,char *envp[])<br />int   execlp( char *pathname,char *arg0,char *arg1,…,NULL)<br />int   execlpe(char *pathname,char *arg0,char *arg1,…,NULL,char *envp[])<br />int   execv(  char *pathname,char *argv[])<br />int   execve( char *pathname,char *argv[],char *envp[])<br />int   execvp( char *pathname,char *argv[])<br />int   execvpe(char *pathname,char *argv[],char *envp[])<br />         exec函数族装入并运行程序pathname，并将参数<br />          arg0(arg1,arg2,argv[],envp[])传递给子程序,出错返回-1<br />       在exec函数族中,后缀l、v、p、e添加到exec后，<br />       所指定的函数将具有某种操作能力<br />      有后缀  p时，函数可以利用DOS的PATH变量查找子程序文件。<br />              l时，函数中被传递的参数个数固定。<br />              v时，函数中被传递的参数个数不固定。<br />              e时，函数传递指定参数envp，允许改变子进程的环境，<br />                   无后缀e时，子进程使用当前程序的环境。</p>
		<p>void  _exit(int status)终止当前程序,但不清理现场<br />void  exit(int status) 终止当前程序,关闭所有文件,写缓冲区的输出(等待输出),<br />                       并调用任何寄存器的"出口函数",无返回值</p>
		<p>int   spawn…运行子程序<br />int   spawnl(  int mode,char *pathname,char *arg0,char *arg1,…,<br />               char *argn,NULL)<br />int   spawnle( int mode,char *pathname,char *arg0,char *arg1,…,<br />               char *argn,NULL,char *envp[])<br />int   spawnlp( int mode,char *pathname,char *arg0,char *arg1,…,<br />               char *argn,NULL)<br />int   spawnlpe(int mode,char *pathname,char *arg0,char *arg1,…,<br />               char *argn,NULL,char *envp[])<br />int   spawnv(  int mode,char *pathname,char *argv[])<br />int   spawnve( int mode,char *pathname,char *argv[],char *envp[])<br />int   spawnvp( int mode,char *pathname,char *argv[])<br />int   spawnvpe(int mode,char *pathname,char *argv[],char *envp[])<br />       spawn函数族在mode模式下运行子程序pathname,并将参数<br />        arg0(arg1,arg2,argv[],envp[])传递给子程序.出错返回-1<br />       mode为运行模式<br />        mode为 P_WAIT   表示在子程序运行完后返回本程序<br />               P_NOWAIT 表示在子程序运行时同时运行本程序(不可用)<br />               P_OVERLAY表示在本程序退出后运行子程序<br />        在spawn函数族中,后缀l、v、p、e添加到spawn后，<br />        所指定的函数将具有某种操作能力<br />        有后缀 p时, 函数利用DOS的PATH查找子程序文件<br />               l时, 函数传递的参数个数固定.<br />               v时, 函数传递的参数个数不固定.<br />               e时, 指定参数envp可以传递给子程序,允许改变子程序运行环境.<br />                  当无后缀e时,子程序使用本程序的环境.</p>
		<p>int   system(char *command) 将MSDOS命令command传递给DOS执行</p>
		<p>
				<br />================================================================</p>
		<p>转换子程序,函数库为math.h、stdlib.h、ctype.h、float.h<br />char   *ecvt(double value,int ndigit,int *decpt,int *sign)<br />         将浮点数value转换成字符串并返回该字符串<br />char   *fcvt(double value,int ndigit,int *decpt,int *sign)<br />         将浮点数value转换成字符串并返回该字符串<br />char   *gcvt(double value,int ndigit,char *buf)<br />         将数value转换成字符串并存于buf中,并返回buf的指针<br />char  *ultoa(unsigned long value,char *string,int radix)<br />         将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数<br />char   *ltoa(long value,char *string,int radix)<br />         将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数<br />char   *itoa(int value,char *string,int radix)<br />         将整数value转换成字符串存入string,radix为转换时所用基数<br />double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0<br />int    atoi(char *nptr) 将字符串nptr转换成整型数,  并返回这个数,错误返回0<br />long   atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0<br />double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,<br />long   strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,<br />                                               并返回这个数,<br />int    toascii(int c)   返回c相应的ASCII<br />int    tolower(int ch)  若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')<br />int   _tolower(int ch)  返回ch相应的小写字母('a'-'z')<br />int    toupper(int ch)  若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')<br />int   _toupper(int ch)  返回ch相应的大写字母('A'-'Z')</p>
		<p>诊断函数,所在函数库为assert.h、math.h<br />void   assert(int test) 一个扩展成if语句那样的宏，如果test测试失败，<br />        就显示一个信息并异常终止程序,无返回值<br />void   perror(char *string) 本函数将显示最近一次的错误信息，格式如下：<br />        字符串string:错误信息<br />char   *strerror(char *str) 本函数返回最近一次的错误信息,格式如下:<br />        字符串str:错误信息<br />int    matherr(struct exception *e)<br />        用户修改数学错误返回信息函数(没有必要使用)<br />double _matherr(_mexcep why,char *fun,double *arg1p,<br />                double *arg2p,double retval)<br />        用户修改数学错误返回信息函数(没有必要使用)</p>
		<p>
				<br />=======================================================================</p>
		<p>输入输出子程序,函数库为io.h、conio.h、stat.h、dos.h、stdio.h、signal.h<br />int   kbhit()    本函数返回最近所敲的按键<br />int   fgetchar() 从控制台(键盘)读一个字符，显示在屏幕上<br />int   getch()    从控制台(键盘)读一个字符，不显示在屏幕上<br />int   putch()    向控制台(键盘)写一个字符<br />int   getchar()  从控制台(键盘)读一个字符，显示在屏幕上<br />int   putchar()  向控制台(键盘)写一个字符<br />int   getche()   从控制台(键盘)读一个字符，显示在屏幕上<br />int   ungetch(int c) 把字符c退回给控制台(键盘)<br />char *cgets(char *string) 从控制台(键盘)读入字符串存于string中<br />int   scanf(char *format[,argument…])从控制台读入一个字符串,分别对各个参数进行<br />       赋值,使用BIOS进行输出<br />int   vscanf(char *format,Valist param)从控制台读入一个字符串,分别对各个参数进行<br />       赋值,使用BIOS进行输出,参数从Valist param中取得<br />int   cscanf(char *format[,argument…])从控制台读入一个字符串,分别对各个参数进行<br />       赋值,直接对控制台作操作,比如显示器在显示时字符时即为直接写频方式显示<br />int   sscanf(char *string,char *format[,argument,…])通过字符串string,分别对各个<br />       参数进行赋值<br />int   vsscanf(char *string,char *format,Vlist param)通过字符串string,分别对各个<br />       参数进行赋值,参数从Vlist param中取得<br />int   puts(char *string)  发关一个字符串string给控制台(显示器),<br />       使用BIOS进行输出<br />void  cputs(char *string) 发送一个字符串string给控制台(显示器),<br />       直接对控制台作操作,比如显示器即为直接写频方式显示<br />int   printf(char *format[,argument,…]) 发送格式化字符串输出给控制台(显示器)<br />       使用BIOS进行输出<br />int   vprintf(char *format,Valist param) 发送格式化字符串输出给控制台(显示器)<br />       使用BIOS进行输出,参数从Valist param中取得<br />int   cprintf(char *format[,argument,…]) 发送格式化字符串输出给控制台(显示器),<br />       直接对控制台作操作,比如显示器即为直接写频方式显示<br />int   vcprintf(char *format,Valist param)发送格式化字符串输出给控制台(显示器),<br />       直接对控制台作操作,比如显示器即为直接写频方式显示,<br />       参数从Valist param中取得<br />int   sprintf(char *string,char *format[,argument,…])<br />        将字符串string的内容重新写为格式化后的字符串<br />int   vsprintf(char *string,char *format,Valist param)<br />        将字符串string的内容重新写为格式化后的字符串,参数从Valist param中取得<br />int   rename(char *oldname,char *newname)将文件oldname的名称改为newname<br />int   ioctl(int handle,int cmd[,int *argdx,int argcx])<br />        本函数是用来控制输入/输出设备的，请见下表：<br />        ┌───┬────────────────────────────┐<br />        │cmd值 │功能                                                    │<br />        ├───┼────────────────────────────┤<br />        │  0   │取出设备信息                                            │<br />        │  1   │设置设备信息                                            │<br />        │  2   │把argcx字节读入由argdx所指的地址                        │<br />        │  3   │在argdx所指的地址写argcx字节                            │<br />        │  4   │除把handle当作设备号(0=当前,1=A,等)之外,均和cmd=2时一样 │<br />        │  5   │除把handle当作设备号(0=当前,1=A,等)之外,均和cmd=3时一样 │<br />        │  6   │取输入状态                                              │<br />        │  7   │取输出状态                                              │<br />        │  8   │测试可换性;只对于DOS 3.x                                │<br />        │  11  │置分享冲突的重算计数;只对DOS 3.x                        │<br />        └───┴────────────────────────────┘<br />int   (*ssignal(int sig,int(*action)())()执行软件信号(没必要使用)<br />int   gsignal(int sig)                   执行软件信号(没必要使用)</p>
		<p>int   _open(char *pathname,int access)为读或写打开一个文件,<br />        按后按access来确定是读文件还是写文件,access值见下表<br />        ┌──────┬────────────────────┐<br />        │access值    │意义                                    │<br />        ├──────┼────────────────────┤<br />        │O_RDONLY    │读文件                                  │<br />        │O_WRONLY    │写文件                                  │<br />        │O_RDWR      │即读也写                                │<br />        │O_NOINHERIT │若文件没有传递给子程序,则被包含         │<br />        │O_DENYALL   │只允许当前处理必须存取的文件            │<br />        │O_DENYWRITE │只允许从任何其它打开的文件读            │<br />        │O_DENYREAD  │只允许从任何其它打开的文件写            │<br />        │O_DENYNONE  │允许其它共享打开的文件                  │<br />        └──────┴────────────────────┘<br />int   open(char *pathname,int access[,int permiss])为读或写打开一个文件,<br />        按后按access来确定是读文件还是写文件,access值见下表<br />        ┌────┬────────────────────┐<br />        │access值│意义                                    │<br />        ├────┼────────────────────┤<br />        │O_RDONLY│读文件                                  │<br />        │O_WRONLY│写文件                                  │<br />        │O_RDWR  │即读也写                                │<br />        │O_NDELAY│没有使用;对UNIX系统兼容                 │<br />        │O_APPEND│即读也写,但每次写总是在文件尾添加       │<br />        │O_CREAT │若文件存在,此标志无用;若不存在,建新文件 │<br />        │O_TRUNC │若文件存在,则长度被截为0,属性不变       │<br />        │O_EXCL  │未用;对UNIX系统兼容                     │<br />        │O_BINARY│此标志可显示地给出以二进制方式打开文件  │<br />        │O_TEXT  │此标志可用于显示地给出以文本方式打开文件│<br />        └────┴────────────────────┘<br />        permiss为文件属性,可为以下值:<br />         S_IWRITE允许写  S_IREAD允许读  S_IREAD|S_IWRITE允许读、写<br />int   creat(char *filename,int permiss)  建立一个新文件filename，并设定<br />       读写性。permiss为文件读写性，可以为以下值<br />        S_IWRITE允许写  S_IREAD允许读  S_IREAD|S_IWRITE允许读、写<br />int  _creat(char *filename,int attrib)  建立一个新文件filename，并设定文件<br />      属性。attrib为文件属性，可以为以下值<br />        FA_RDONLY只读  FA_HIDDEN隐藏  FA_SYSTEM系统<br />int   creatnew(char *filenamt,int attrib) 建立一个新文件filename，并设定文件<br />       属性。attrib为文件属性，可以为以下值<br />         FA_RDONLY只读  FA_HIDDEN隐藏  FA_SYSTEM系统<br />int   creattemp(char *filenamt,int attrib) 建立一个新文件filename，并设定文件<br />       属性。attrib为文件属性，可以为以下值<br />         FA_RDONLY只读  FA_HIDDEN隐藏  FA_SYSTEM系统<br />int   read(int handle,void *buf,int nbyte)从文件号为handle的文件中读nbyte个字符<br />       存入buf中<br />int  _read(int handle,void *buf,int nbyte)从文件号为handle的文件中读nbyte个字符<br />       存入buf中,直接调用MSDOS进行操作.<br />int   write(int handle,void *buf,int nbyte)将buf中的nbyte个字符写入文件号<br />       为handle的文件中<br />int  _write(int handle,void *buf,int nbyte)将buf中的nbyte个字符写入文件号<br />       为handle的文件中<br />int   dup(int handle) 复制一个文件处理指针handle,返回这个指针<br />int   dup2(int handle,int newhandle) 复制一个文件处理指针handle到newhandle<br />int   eof(int *handle)检查文件是否结束,结束返回1,否则返回0<br />long  filelength(int handle) 返回文件长度，handle为文件号<br />int   setmode(int handle,unsigned mode)本函数用来设定文件号为handle的文件的打<br />       开方式<br />int   getftime(int handle,struct ftime *ftime) 读取文件号为handle的文件的时间，<br />        并将文件时间存于ftime结构中，成功返回0,ftime结构如下：<br />        ┌─────────────────┐<br />        │struct ftime                      │<br />        │{                                 │<br />        │ unsigned ft_tsec:5; /*秒*/       │<br />        │ unsigned ft_min:6;  /*分*/       │<br />        │ unsigned ft_hour:5; /*时*/       │<br />        │ unsigned ft_day:5;  /*日*/       │<br />        │ unsigned ft_month:4;/*月*/       │<br />        │ unsigned ft_year:1; /*年-1980*/  │<br />        │}                                 │<br />        └─────────────────┘<br />int   setftime(int handle,struct ftime *ftime) 重写文件号为handle的文件时间,<br />       新时间在结构ftime中.成功返回0.结构ftime如下:<br />        ┌─────────────────┐<br />        │struct ftime                      │<br />        │{                                 │<br />        │ unsigned ft_tsec:5; /*秒*/       │<br />        │ unsigned ft_min:6;  /*分*/       │<br />        │ unsigned ft_hour:5; /*时*/       │<br />        │ unsigned ft_day:5;  /*日*/       │<br />        │ unsigned ft_month:4;/*月*/       │<br />        │ unsigned ft_year:1; /*年-1980*/  │<br />        │}                                 │<br />        └─────────────────┘<br />long  lseek(int handle,long offset,int fromwhere) 本函数将文件号为handle的文件<br />        的指针移到fromwhere后的第offset个字节处.<br />         SEEK_SET 文件开关   SEEK_CUR 当前位置   SEEK_END 文件尾<br />long  tell(int handle) 本函数返回文件号为handle的文件指针,以字节表示<br />int   isatty(int handle)本函数用来取设备handle的类型<br />int   lock(int handle,long offset,long length)   对文件共享作封锁<br />int   unlock(int handle,long offset,long length) 打开对文件共享的封锁<br />int   close(int handle) 关闭handle所表示的文件处理,handle是从_creat、creat、<br />        creatnew、creattemp、dup、dup2、_open、open中的一个处调用获得的文件处理<br />        成功返回0否则返回-1,可用于UNIX系统<br />int  _close(int handle) 关闭handle所表示的文件处理,handle是从_creat、creat、<br />       creatnew、creattemp、dup、dup2、_open、open中的一个处调用获得的文件处理<br />       成功返回0否则返回-1,只能用于MSDOS系统</p>
		<p>FILE *fopen(char *filename,char *type) 打开一个文件filename,打开方式为type，<br />        并返回这个文件指针，type可为以下字符串加上后缀<br />      ┌──┬────┬───────┬────────┐<br />      │type│读写性  │文本/2进制文件│建新/打开旧文件 │<br />      ├──┼────┼───────┼────────┤<br />      │r   │读      │文本          │打开旧的文件    │<br />      │w   │写      │文本          │建新文件        │<br />      │a   │添加    │文本          │有就打开无则建新│<br />      │r+  │读/写   │不限制        │打开            │<br />      │w+  │读/写   │不限制        │建新文件        │<br />      │a+  │读/添加 │不限制        │有就打开无则建新│<br />      └──┴────┴───────┴────────┘<br />      可加的后缀为t、b。加b表示文件以二进制形式进行操作，t没必要使用<br />      例: ┌──────────────────┐<br />          │#include&lt;stdio.h&gt;                   │<br />          │main()                              │<br />          │{                                   │<br />          │ FILE *fp;                          │<br />          │ fp=fopen("C:\\WPS\\WPS.EXE","r+b");│<br />          └──────────────────┘<br />FILE *fdopen(int ahndle,char *type)<br />FILE *freopen(char *filename,char *type,FILE *stream)<br />int   getc(FILE *stream)  从流stream中读一个字符，并返回这个字符<br />int   putc(int ch,FILE *stream)向流stream写入一个字符ch<br />int   getw(FILE *stream) 从流stream读入一个整数，错误返回EOF<br />int   putw(int w,FILE *stream)向流stream写入一个整数<br />int   ungetc(char c,FILE *stream) 把字符c退回给流stream，下一次读进的字符将是c<br />int   fgetc(FILE *stream) 从流stream处读一个字符，并返回这个字符<br />int   fputc(int ch,FILE *stream) 将字符ch写入流stream中<br />char *fgets(char *string,int n,FILE *stream) 从流stream中读n个字符存入string中<br />int   fputs(char *string,FILE *stream) 将字符串string写入流stream中<br />int   fread(void *ptr,int size,int nitems,FILE *stream) 从流stream中读入nitems<br />       个长度为size的字符串存入ptr中<br />int   fwrite(void *ptr,int size,int nitems,FILE *stream) 向流stream中写入nitems<br />       个长度为size的字符串,字符串在ptr中<br />int   fscanf(FILE *stream,char *format[,argument,…]) 以格式化形式从流stream中<br />       读入一个字符串<br />int   vfscanf(FILE *stream,char *format,Valist param) 以格式化形式从流stream中<br />       读入一个字符串,参数从Valist param中取得<br />int   fprintf(FILE *stream,char *format[,argument,…])  以格式化形式将一个字符<br />       串写给指定的流stream<br />int   vfprintf(FILE *stream,char *format,Valist param)  以格式化形式将一个字符<br />       串写给指定的流stream,参数从Valist param中取得<br />int   fseek(FILE *stream,long offset,int fromwhere) 函数把文件指针移到fromwhere<br />       所指位置的向后offset个字节处,fromwhere可以为以下值:<br />       SEEK_SET 文件开关   SEEK_CUR 当前位置   SEEK_END 文件尾<br />long  ftell(FILE *stream)  函数返回定位在stream中的当前文件指针位置,以字节表示<br />int   rewind(FILE *stream) 将当前文件指针stream移到文件开头<br />int   feof(FILE *stream) 检测流stream上的文件指针是否在结束位置<br />int   fileno(FILE *stream) 取流stream上的文件处理，并返回文件处理<br />int   ferror(FILE *stream) 检测流stream上是否有读写错误，如有错误就返回1<br />void  clearerr(FILE *stream) 清除流stream上的读写错误<br />void  setbuf(FILE *stream,char *buf) 给流stream指定一个缓冲区buf<br />void  setvbuf(FILE *stream,char *buf,int type,unsigned size)<br />       给流stream指定一个缓冲区buf,大小为size,类型为type,type的值见下表<br />      ┌───┬───────────────────────────────┐<br />      │type值│意义                                                          │<br />      ├───┼───────────────────────────────┤<br />      │_IOFBF│文件是完全缓冲区,当缓冲区是空时,下一个输入操作将企图填满整个缓│<br />      │      │冲区.在输出时,在把任何数据写到文件之前,将完全填充缓冲区.      │<br />      │_IOLBF│文件是行缓冲区.当缓冲区为空时,下一个输入操作将仍然企图填整个缓│<br />      │      │冲区.然而在输出时,每当新行符写到文件,缓冲区就被清洗掉.        │<br />      │_IONBF│文件是无缓冲的.buf和size参数是被忽略的.每个输入操作将直接从文 │<br />      │      │件读,每个输出操作将立即把数据写到文件中.                      │<br />      └───┴───────────────────────────────┘<br />int   fclose(FILE *stream) 关闭一个流，可以是文件或设备(例如LPT1)<br />int   fcloseall()          关闭所有除stdin或stdout外的流<br />int   fflush(FILE *stream) 关闭一个流，并对缓冲区作处理<br />        处理即对读的流，将流内内容读入缓冲区；<br />        对写的流，将缓冲区内内容写入流。成功返回0<br />int   fflushall()          关闭所有流，并对流各自的缓冲区作处理<br />        处理即对读的流，将流内内容读入缓冲区；<br />        对写的流，将缓冲区内内容写入流。成功返回0</p>
		<p>int   access(char *filename,int amode) 本函数检查文件filename并返回文件的属性,<br />        函数将属性存于amode中，amode由以下位的组合构成<br />          06可以读、写       04可以读   02可以写   01执行(忽略的)   00文件存在<br />      如果filename是一个目录,函数将只确定目录是否存在<br />      函数执行成功返回0,否则返回-1<br />int   chmod(char *filename,int permiss) 本函数用于设定文件filename的属性<br />        permiss可以为以下值<br />           S_IWRITE允许写  S_IREAD允许读  S_IREAD|S_IWRITE允许读、写<br />int  _chmod(char *filename,int func[,int attrib]);<br />       本函数用于读取或设定文件filename的属性，<br />       当func=0时，函数返回文件的属性；当func=1时，函数设定文件的属性<br />       若为设定文件属性，attrib可以为下列常数之一<br />       FA_RDONLY只读  FA_HIDDEN隐藏  FA_SYSTEM系统</p>
		<p>
				<br />=================================================================</p>
		<p>接口子程序,所在函数库为:dos.h、bios.h<br />unsigned sleep(unsigned seconds)暂停seconds微秒(百分之一秒)<br />int      unlink(char *filename)删除文件filename<br />unsigned FP_OFF(void far *farptr)本函数用来取远指针farptr的偏移量<br />unsigned FP_SEG(void far *farptr)本函数用来没置远指针farptr的段值<br />void far *MK_FP(unsigned seg,unsigned off)根据段seg和偏移量off构造一个far指针<br />unsigned getpsp()取程序段前缀的段地址,并返回这个地址<br />char *parsfnm(char *cmdline,struct fcb *fcbptr,int option)<br />       函数分析一个字符串,通常,对一个文件名来说,是由cmdline所指的一个命令行.<br />       文件名是放入一个FCB中作为一个驱动器,文件名和扩展名.FCB是由fcbptr所指<br />       定的.option参数是DOS分析系统调用时,AL文本的值.</p>
		<p>int   absread(int drive,int nsects,int sectno,void *buffer)本函数功能为读特定的<br />       磁盘扇区,drive为驱动器号(0=A,1=B等),nsects为要读的扇区数,sectno为开始的逻<br />       辑扇区号,buffer为保存所读数据的保存空间<br />int   abswrite(int drive,int nsects,int sectno,void *buffer)本函数功能为写特定的<br />       磁盘扇区,drive为驱动器号(0=A,1=B等),nsects为要写的扇区数,sectno为开始的逻<br />       辑扇区号,buffer为保存所写数据的所在空间<br />void  getdfree(int drive,struct dfree *dfreep)本函数用来取磁盘的自由空间,<br />       drive为磁盘号(0=当前,1=A等).函数将磁盘特性的由dfreep指向的dfree结构中.<br />       dfree结构如下:<br />       ┌───────────────────┐<br />       │struct dfree                          │<br />       │{                                     │<br />       │ unsigned df_avail; /*有用簇个数*/    │<br />       │ unsigned df_total; /*总共簇个数*/    │<br />       │ unsigned df_bsec;  /*每个扇区字节数*/│<br />       │ unsigned df_sclus; /*每个簇扇区数*/  │<br />       │}                                     │<br />       └───────────────────┘<br />char far *getdta()             取磁盘转换地址DTA<br />void      setdta(char far *dta)设置磁盘转换地址DTA<br />void  getfat(int drive,fatinfo *fatblkp)<br />       本函数返回指定驱动器drive(0=当前,1=A,2=B等)的文件分配表信息<br />       并存入结构fatblkp中,结构如下:<br />       ┌──────────────────┐<br />       │struct fatinfo                      │<br />       │{                                   │<br />       │ char fi_sclus; /*每个簇扇区数*/    │<br />       │ char fi_fatid; /*文件分配表字节数*/│<br />       │ int  fi_nclus; /*簇的数目*/        │<br />       │ int  fi_bysec; /*每个扇区字节数*/  │<br />       │}                                   │<br />       └──────────────────┘<br />void  getfatd(struct fatinfo *fatblkp) 本函数返回当前驱动器的文件分配表信息,<br />       并存入结构fatblkp中,结构如下:           <br />       ┌──────────────────┐<br />       │struct fatinfo                      │<br />       │{                                   │<br />       │ char fi_sclus; /*每个簇扇区数*/    │<br />       │ char fi_fatid; /*文件分配表字节数*/│<br />       │ int  fi_nclus; /*簇的数目*/        │<br />       │ int  fi_bysec; /*每个扇区字节数*/  │<br />       │}                                   │<br />       └──────────────────┘</p>
		<p>int   bdos(int dosfun,unsigned dosdx,unsigned dosal)本函数对MSDOS系统进行调用,<br />       dosdx为寄存器dx的值,dosal为寄存器al的值,dosfun为功能号<br />int   bdosptr(int dosfun,void *argument,unsiigned dosal)本函数对MSDOS系统进行调用,<br />       argument为寄存器dx的值,dosal为寄存器al的值,dosfun为功能号<br />int   int86(int intr_num,union REGS *inregs,union REGS *outregs)<br />       执行intr_num号中断,用户定义的寄存器值存于结构inregs中,<br />       执行完后将返回的寄存器值存于结构outregs中.<br />int   int86x(int intr_num,union REGS *inregs,union REGS *outregs,<br />             struct SREGS *segregs)执行intr_num号中断,用户定义的寄存器值存于<br />       结构inregs中和结构segregs中,执行完后将返回的寄存器值存于结构outregs中.<br />int   intdos(union REGS *inregs,union REGS *outregs)<br />       本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值<br />       存于结构inregs中,执行完后函数将返回的寄存器值存于结构outregs中<br />int   intdosx(union REGS *inregs,union REGS *outregs,struct SREGS *segregs)<br />       本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值<br />       存于结构inregs和segregs中,执行完后函数将返回的寄存器值存于结构outregs中<br />void  intr(int intr_num,struct REGPACK *preg)本函数中一个备用的8086软件中断接口<br />       它能产生一个由参数intr_num指定的8086软件中断.函数在执行软件中断前,<br />       从结构preg复制用户定义的各寄存器值到各个寄存器.软件中断完成后,<br />       函数将当前各个寄存器的值复制到结构preg中.参数如下:<br />       intr_num 被执行的中断号<br />       preg为保存用户定义的寄存器值的结构,结构如下<br />       ┌──────────────────────┐<br />       │struct REGPACK                              │<br />       │{                                           │<br />       │ unsigned r_ax,r_bx,r_cx,r_dx;              │<br />       │ unsigned r_bp,r_si,r_di,r_ds,r_es,r_flags; │<br />       │}                                           │<br />       └──────────────────────┘<br />       函数执行完后,将新的寄存器值存于结构preg中<br />void  keep(int status,int size)以status状态返回MSDOS,但程序仍保留于内存中,所占<br />       用空间由size决定.<br />void  ctrlbrk(int (*fptr)()) 设置中断后的对中断的处理程序.<br />void  disable() 禁止发生中断<br />void  enable()  允许发生中断<br />void  geninterrupt(int intr_num)执行由intr_num所指定的软件中断<br />void  interrupt(* getvect(int intr_num))() 返回中断号为intr_num的中断处理程序,<br />       例如: old_int_10h=getvect(0x10);<br />void  setvect(int intr_num,void interrupt(* isr)()) 设置中断号为intr_num的中<br />       断处理程序为isr,例如: setvect(0x10,new_int_10h);<br />void  harderr(int (*fptr)()) 定义一个硬件错误处理程序,<br />       每当出现错误时就调用fptr所指的程序<br />void  hardresume(int rescode)硬件错误处理函数<br />void  hardretn(int errcode)  硬件错误处理函数<br />int   inport(int prot) 从指定的输入端口读入一个字,并返回这个字<br />int   inportb(int port)从指定的输入端口读入一个字节,并返回这个字节<br />void  outport(int port,int word) 将字word写入指定的输出端口port<br />void  outportb(int port,char byte)将字节byte写入指定的输出端口port<br />int   peek(int segment,unsigned offset) 函数返回segment:offset处的一个字<br />char  peekb(int segment,unsigned offset)函数返回segment:offset处的一个字节<br />void  poke(int segment,int offset,char value) 将字value写到segment:offset处<br />void  pokeb(int segment,int offset,int value) 将字节value写到segment:offset处<br />int   randbrd(struct fcb *fcbptr,int reccnt)<br />       函数利用打开fcbptr所指的FCB读reccnt个记录.<br />int   randbwr(struct fcb *fcbptr,int reccnt)<br />       函数将fcbptr所指的FCB中的reccnt个记录写到磁盘上<br />void  segread(struct SREGS *segtbl)函数把段寄存器的当前值放进结构segtbl中<br />int   getverify()         取检验标志的当前状态(0=检验关闭,1=检验打开)<br />void  setverify(int value)设置当前检验状态,<br />       value为0表示关闭检验,为1表示打开检验<br />int   getcbrk()本函数返回控制中断检测的当前设置<br />int   setcbrk(int value)本函数用来设置控制中断检测为接通或断开<br />       当value=0时,为断开检测.当value=1时,为接开检测</p>
		<p>int   dosexterr(struct DOSERR *eblkp)取扩展错误.在DOS出现错误后,此函数将扩充的<br />       错误信息填入eblkp所指的DOSERR结构中.该结构定义如下:<br />      ┌──────────────┐<br />      │struct DOSERR               │<br />      │{                           │<br />      │ int  exterror;/*扩展错误*/ │<br />      │ char class;   /*错误类型*/ │<br />      │ char action;  /*方式*/     │<br />      │ char locus;   /*错误场所*/ │<br />      │}                           │<br />      └──────────────┘<br />int   bioscom(int cmd,char type,int port) 本函数负责对数据的通讯工作,<br />        cmd可以为以下值:<br />        0 置通讯参数为字节byte值     1 发送字符通过通讯线输出<br />        2 从通讯线接受字符           3 返回通讯的当前状态<br />        port为通讯端口,port=0时通讯端口为COM1,port=1时通讯端口为COM2,以此类推<br />        byte为传送或接收数据时的参数,为以下位的组合:<br />        ┌───┬─────┬───┬─────┬───┬─────┐<br />        │byte值│意义      │byte值│意义      │byte值│意义      │<br />        ├───┼─────┼───┼─────┼───┼─────┤<br />        │0x02  │7数据位   │0x03  │8数据位   │0x00  │1停止位   │<br />        │0x04  │2停止位   │0x00  │无奇偶性  │0x08  │奇数奇偶性│<br />        │0x18  │偶数奇偶性│0x00  │110波特   │0x20  │150波特   │<br />        │0x40  │300波特   │0x60  │600波特   │0x80  │1200波特  │<br />        │0xA0  │2400波特  │0xC0  │4800波特  │0xE0  │9600波特  │<br />        └───┴─────┴───┴─────┴───┴─────┘<br />        例如:0xE0|0x08|0x00|0x03即表示置通讯口为9600波特,奇数奇偶性,1停止位,<br />             8数据位.<br />        函数返回值为一个16位整数,定义如下:<br />        第15位 超时<br />        第14位 传送移位寄存器空<br />        第13位 传送固定寄存器空<br />        第12位 中断检测<br />        第11位 帧错误<br />        第10位 奇偶错误<br />        第 9位 过载运行错误<br />        第 8位 数据就绪<br />        第 7位 接收线信号检测<br />        第 6位 环形指示器<br />        第 5位 数据设置就绪<br />        第 4位 清除发送<br />        第 3位 δ接收线信号检测器<br />        第 2位 下降边环形检测器<br />        第 1位 δ数据设置就绪<br />        第 0位 δ清除发送</p>
		<p>int   biosdisk(int cmd,int drive,int head,int track,<br />               int sector,int nsects,void *buffer)<br />       本函数用来对驱动器作一定的操作,cmd为功能号,<br />       drive为驱动器号(0=A,1=B,0x80=C,0x81=D,0x82=E等).cmd可为以下值:<br />        0 重置软磁盘系统.这强迫驱动器控制器来执行硬复位.忽略所有其它参数.<br />        1 返回最后的硬盘操作状态.忽略所有其它参数<br />        2 读一个或多个磁盘扇区到内存.读开始的扇区由head、track、sector给出。<br />          扇区号由nsects给出。把每个扇区512个字节的数据读入buffer<br />        3 从内存读数据写到一个或多个扇区。写开始的扇区由head、track、sector<br />          给出。扇区号由nsects给出。所写数据在buffer中，每扇区512个字节。<br />        4 检验一个或多个扇区。开始扇区由head、track、sector给出。扇区号由<br />          nsects给出。<br />        5 格式化一个磁道，该磁道由head和track给出。buffer指向写在指定track上<br />          的扇区磁头器的一个表。<br />          以下cmd值只允许用于XT或AT微机：<br />        6 格式化一个磁道，并置坏扇区标志。<br />        7 格式化指定磁道上的驱动器开头。<br />        8 返回当前驱动器参数，驱动器信息返回写在buffer中(以四个字节表示)。<br />        9 初始化一对驱动器特性。<br />       10 执行一个长的读，每个扇区读512加4个额外字节<br />       11 执行一个长的写，每个扇区写512加4个额外字节<br />       12 执行一个磁盘查找<br />       13 交替磁盘复位<br />       14 读扇区缓冲区<br />       15 写扇区缓冲区<br />       16 检查指定的驱动器是否就绪<br />       17 复核驱动器<br />       18 控制器RAM诊断<br />       19 驱动器诊断<br />       20 控制器内部诊<br />       函数返回由下列位组合成的状态字节：<br />       0x00 操作成功<br />       0x01 坏的命令<br />       0x02 地址标记找不到<br />       0x04 记录找不到<br />       0x05 重置失败<br />       0x07 驱动参数活动失败<br />       0x09 企图DMA经过64K界限<br />       0x0B 检查坏的磁盘标记<br />       0x10 坏的ECC在磁盘上读<br />       0x11 ECC校正的数据错误（注意它不是错误）<br />       0x20 控制器失效<br />       0x40 查找失败<br />       0x80 响应的连接失败<br />       0xBB 出现无定义错误<br />       0xFF 读出操作失败</p>
		<p>int   biodquip() 检查设备，函数返回一字节，该字节每一位表示一个信息，如下：<br />       第15位 打印机号<br />       第14位 打印机号<br />       第13位 未使用<br />       第12位 连接游戏I/O<br />       第11位 RS232端口号<br />       第 8位 未使用<br />       第 7位 软磁盘号<br />       第 6位 软磁盘号,<br />              00为1号驱动器,01为2号驱动器,10为3号驱动器,11为4号驱动器<br />       第 5位 初始化<br />       第 4位 显示器模式<br />              00为未使用，01为40x25BW彩色显示卡<br />              10为80x25BW彩色显示卡，11为80x25BW单色显示卡<br />       第 3位 母扦件<br />       第 2位 随机存贮器容量,00为16K,01为32K,10为48K,11为64K<br />       第 1位 浮点共用处理器<br />       第 0位 从软磁盘引导</p>
		<p>int   bioskey(int cmd)本函数用来执行各种键盘操作，由cmd确定操作。<br />       cmd可为以下值：<br />       0 返回敲键盘上的下一个键。若低8位为非0,即为ASCII字符；若低8位为0,<br />         则返回扩充了的键盘代码。<br />       1 测试键盘是否可用于读。返回0表示没有键可用；否则返回下一次敲键之值。<br />         敲键本身一直保持由下次调用具的cmd值为0的bioskey所返回的值。<br />       2 返回当前的键盘状态，由返回整数的每一个位表示，见下表：<br />        ┌──┬───────────┬───────────┐<br />        │ 位 │为0时意义             │为1时意义             │<br />        ├──┼───────────┼───────────┤<br />        │ 7  │插入状态              │改写状态              │<br />        │ 6  │大写状态              │小写状态              │<br />        │ 5  │数字状态，NumLock灯亮 │光标状态，NumLock灯熄 │<br />        │ 4  │ScrollLock灯亮        │ScrollLock灯熄        │<br />        │ 3  │Alt按下               │Alt未按下             │<br />        │ 2  │Ctrl按下              │Ctrl未按下            │<br />        │ 1  │左Shift按下           │左Shift未按下         │<br />        │ 0  │右Shift按下           │右Shift未按下         │<br />        └──┴───────────┴───────────┘<br />int   biosmemory()返回内存大小,以K为单位.<br />int   biosprint(int cmd,int byte,int port)控制打印机的输入/输出.<br />       port为打印机号,0为LPT1,1为LPT2,2为LPT3等<br />       cmd可以为以下值:<br />         0 打印字符,将字符byte送到打印机<br />         1 打印机端口初始化<br />         2 读打印机状态<br />       函数返回值由以下位值组成表示当前打印机状态<br />         0x01 设备时间超时<br />         0x08 输入/输出错误<br />         0x10 选择的<br />         0x20 走纸<br />         0x40 认可<br />         0x80 不忙碌</p>
		<p>int   biostime(int cmd,long newtime)计时器控制,cmd为功能号,可为以下值<br />        0 函数返回计时器的当前值<br />        1 将计时器设为新值newtime</p>
		<p>struct country *country(int countrycmode,struct country *countryp)<br />       本函数用来控制某一国家的相关信息,如日期,时间,货币等.<br />       若countryp=-1时,当前的国家置为countrycode值(必须为非0).否则,由countryp<br />       所指向的country结构用下列的国家相关信息填充:<br />       (1)当前的国家(若countrycode为0或2)由countrycode所给定的国家.<br />       结构country定义如下:<br />      ┌────────────────────┐<br />      │struct country                          │<br />      │{                                       │<br />      │ int  co_date;         /*日期格式*/     │<br />      │ char co_curr[5];      /*货币符号*/     │<br />      │ char co_thsep[2];     /*数字分隔符*/   │<br />      │ char co_desep[2];     /*小数点*/       │<br />      │ char co_dtsep[2];     /*日期分隔符*/   │<br />      │ char co_tmsep[2];     /*时间分隔符*/   │<br />      │ char co_currstyle;    /*货币形式*/     │<br />      │ char co_digits;       /*有效数字*/     │<br />      │ int (far *co_case)(); /*事件处理函数*/ │<br />      │ char co_dasep;        /*数据分隔符*/   │<br />      │ char co_fill[10];     /*补充字符*/     │<br />      │}                                       │<br />      └────────────────────┘<br />       co_date的值所代表的日期格式是:<br />        0 月日年    1 日月年     2 年月日<br />       co_currstrle的值所代表的货币显示方式是<br />        0 货币符号在数值前,中间无空格<br />        1 货币符号在数值后,中间无空格<br />        2 货币符号在数值前,中间有空格<br />        3 货币符号在数值后,中间有空格</p>
		<p>操作函数,所在函数库为string.h、mem.h<br />mem…操作存贮数组<br />void *memccpy(void *destin,void *source,unsigned char ch,unsigned n)<br />void *memchr(void *s,char ch,unsigned n)<br />void *memcmp(void *s1,void *s2,unsigned n)<br />int   memicmp(void *s1,void *s2,unsigned n)<br />void *memmove(void *destin,void *source,unsigned n)<br />void *memcpy(void *destin,void *source,unsigned n)<br />void *memset(void *s,char ch,unsigned n)<br />这些函数,mem…系列的所有成员均操作存贮数组.在所有这些函数中,数组是n字节长.<br />memcpy从source复制一个n字节的块到destin.如果源块和目标块重迭,则选择复制方向,<br />  以例正确地复制覆盖的字节.<br />memmove与memcpy相同.<br />memset将s的所有字节置于字节ch中.s数组的长度由n给出.<br />memcmp比较正好是n字节长的两个字符串s1和s2.些函数按无符号字符比较字节,因此,<br />  memcmp("0xFF","\x7F",1)返回值大于0.<br />memicmp比较s1和s2的前n个字节,不管字符大写或小写.<br />memccpy从source复制字节到destin.复制一结束就发生下列任一情况:<br />  (1)字符ch首选复制到destin.<br />  (2)n个字节已复制到destin.<br />memchr对字符ch检索s数组的前n个字节.<br />返回值:memmove和memcpy返回destin<br />       memset返回s的值<br />       memcmp和memicmp─┬─若s1&lt;s2返回值小于0<br />                        ├─若s1=s2返回值等于0<br />                        └─若s1&gt;s2返回值大于0<br />       memccpy若复制了ch,则返回直接跟随ch的在destin中的字节的一个指针;<br />              否则返回NULL<br />       memchr返回在s中首先出现ch的一个指针;如果在s数组中不出现ch,就返回NULL.</p>
		<p>void  movedata(int segsrc,int offsrc,<br />               int segdest,int offdest,<br />               unsigned numbytes)<br />       本函数将源地址(segsrc:offsrc)处的numbytes个字节<br />       复制到目标地址(segdest:offdest)<br />void  movemem(void *source,void *destin,unsigned len)<br />       本函数从source处复制一块长len字节的数据到destin.若源地址和目标地址字符串<br />       重迭,则选择复制方向,以便正确的复制数据.<br />void  setmem(void *addr,int len,char value)<br />       本函数把addr所指的块的第一个字节置于字节value中.</p>
		<p>str…字符串操作函数<br />char   stpcpy(char *dest,const char *src)<br />        将字符串src复制到dest<br />char   strcat(char *dest,const char *src)<br />        将字符串src添加到dest末尾<br />char   strchr(const char *s,int c)<br />        检索并返回字符c在字符串s中第一次出现的位置<br />int    strcmp(const char *s1,const char *s2)<br />        比较字符串s1与s2的大小,并返回s1-s2<br />char   strcpy(char *dest,const char *src)<br />        将字符串src复制到dest<br />size_t strcspn(const char *s1,const char *s2)<br />        扫描s1,返回在s1中有,在s2中也有的字符个数<br />char   strdup(const char *s)<br />        将字符串s复制到最近建立的单元<br />int    stricmp(const char *s1,const char *s2)<br />        比较字符串s1和s2,并返回s1-s2<br />size_t strlen(const char *s)<br />        返回字符串s的长度<br />char   strlwr(char *s)<br />        将字符串s中的大写字母全部转换成小写字母,并返回转换后的字符串<br />char   strncat(char *dest,const char *src,size_t maxlen)<br />        将字符串src中最多maxlen个字符复制到字符串dest中<br />int    strncmp(const char *s1,const char *s2,size_t maxlen)<br />        比较字符串s1与s2中的前maxlen个字符<br />char   strncpy(char *dest,const char *src,size_t maxlen)<br />        复制src中的前maxlen个字符到dest中<br />int    strnicmp(const char *s1,const char *s2,size_t maxlen)<br />        比较字符串s1与s2中的前maxlen个字符<br />char   strnset(char *s,int ch,size_t n)<br />        将字符串s的前n个字符置于ch中<br />char   strpbrk(const char *s1,const char *s2)<br />        扫描字符串s1,并返回在s1和s2中均有的字符个数<br />char   strrchr(const char *s,int c)<br />        扫描最后出现一个给定字符c的一个字符串s<br />char   strrev(char *s)<br />        将字符串s中的字符全部颠倒顺序重新排列,并返回排列后的字符串<br />char   strset(char *s,int ch)<br />        将一个字符串s中的所有字符置于一个给定的字符ch<br />size_t strspn(const char *s1,const char *s2)<br />        扫描字符串s1,并返回在s1和s2中均有的字符个数<br />char   strstr(const char *s1,const char *s2)<br />        扫描字符串s2,并返回第一次出现s1的位置<br />char   strtok(char *s1,const char *s2)<br />        检索字符串s1,该字符串s1是由字符串s2中定义的定界符所分隔<br />char   strupr(char *s)<br />        将字符串s中的小写字母全部转换成大写字母,并返回转换后的字符串</p>
		<p>存贮分配子程序,所在函数库为dos.h、alloc.h、malloc.h、stdlib.h、process.h<br />int    allocmem(unsigned size,unsigned *seg)利用DOS分配空闲的内存,<br />        size为分配内存大小,seg为分配后的内存指针<br />int    freemem(unsigned seg)释放先前由allocmem分配的内存,seg为指定的内存指针<br />int    setblock(int seg,int newsize)本函数用来修改所分配的内存长度,<br />        seg为已分配内存的内存指针,newsize为新的长度</p>
		<p>int    brk(void *endds)<br />        本函数用来改变分配给调用程序的数据段的空间数量,新的空间结束地址为endds<br />char  *sbrk(int incr)<br />        本函数用来增加分配给调用程序的数据段的空间数量,增加incr个字节的空间</p>
		<p>unsigned long coreleft() 本函数返回未用的存储区的长度,以字节为单位<br />void  *calloc(unsigned nelem,unsigned elsize)分配nelem个长度为elsize的内存空间<br />        并返回所分配内存的指针<br />void  *malloc(unsigned size)分配size个字节的内存空间,并返回所分配内存的指针<br />void   free(void *ptr)释放先前所分配的内存,所要释放的内存的指针为ptr<br />void  *realloc(void *ptr,unsigned newsize)改变已分配内存的大小,ptr为已分配有内<br />        存区域的指针,newsize为新的长度,返回分配好的内存指针.</p>
		<p>long   farcoreleft() 本函数返回远堆中未用的存储区的长度,以字节为单位<br />void far *farcalloc(unsigned long units,unsigned long unitsz)<br />           从远堆分配units个长度为unitsz的内存空间,并返回所分配内存的指针<br />void  *farmalloc(unsigned long size)分配size个字节的内存空间,<br />       并返回分配的内存指针<br />void   farfree(void far *block)释放先前从远堆分配的内存空间,<br />        所要释放的远堆内存的指针为block<br />void far *farrealloc(void far *block,unsigned long newsize)改变已分配的远堆内<br />           存的大小,block为已分配有内存区域的指针,newzie为新的长度,返回分配好<br />           的内存指针</p>
		<p>时间日期函数,函数库为time.h、dos.h<br />在时间日期函数里,主要用到的结构有以下几个:<br />总时间日期贮存结构tm<br />┌──────────────────────┐<br />│struct tm                                   │<br />│{                                           │<br />│ int tm_sec;   /*秒,0-59*/                  │<br />│ int tm_min;   /*分,0-59*/                  │<br />│ int tm_hour;  /*时,0-23*/                  │<br />│ int tm_mday;  /*天数,1-31*/                │<br />│ int tm_mon;   /*月数,0-11*/                │<br />│ int tm_year;  /*自1900的年数*/             │<br />│ int tm_wday;  /*自星期日的天数0-6*/        │<br />│ int tm_yday;  /*自1月1日起的天数,0-365*/   │<br />│ int tm_isdst; /*是否采用夏时制,采用为正数*/│<br />│}                                           │<br />└──────────────────────┘<br />日期贮存结构date<br />┌───────────────┐<br />│struct date                   │<br />│{                             │<br />│ int da_year; /*自1900的年数*/│<br />│ char da_day; /*天数*/        │<br />│ char da_mon; /*月数 1=Jan*/  │<br />│}                             │<br />└───────────────┘<br />时间贮存结构time<br />┌────────────────┐<br />│struct time                     │<br />│{                               │<br />│ unsigned char ti_min;  /*分钟*/│<br />│ unsigned char ti_hour; /*小时*/│<br />│ unsigned char ti_hund;         │<br />│ unsigned char ti_sec;  /*秒*/  │<br />│                                │<br />└────────────────┘<br />char      *ctime(long *clock)<br />            本函数把clock所指的时间(如由函数time返回的时间)转换成下列格式的<br />            字符串:Mon Nov 21 11:31:54 1983\n\0<br />char      *asctime(struct tm *tm)<br />            本函数把指定的tm结构类的时间转换成下列格式的字符串:<br />            Mon Nov 21 11:31:54 1983\n\0<br />double     difftime(time_t time2,time_t time1)<br />            计算结构time2和time1之间的时间差距(以秒为单位)<br />struct tm *gmtime(long *clock)本函数把clock所指的时间(如由函数time返回的时间)<br />            转换成格林威治时间,并以tm结构形式返回<br />struct tm *localtime(long *clock)本函数把clock所指的时间(如函数time返回的时间)<br />            转换成当地标准时间,并以tm结构形式返回<br />void       tzset()本函数提供了对UNIX操作系统的兼容性<br />long       dostounix(struct date *dateptr,struct time *timeptr)<br />            本函数将dateptr所指的日期,timeptr所指的时间转换成UNIX格式,并返回<br />            自格林威治时间1970年1月1日凌晨起到现在的秒数<br />void       unixtodos(long utime,struct date *dateptr,struct time *timeptr)<br />            本函数将自格林威治时间1970年1月1日凌晨起到现在的秒数utime转换成<br />            DOS格式并保存于用户所指的结构dateptr和timeptr中<br />void       getdate(struct date *dateblk)本函数将计算机内的日期写入结构dateblk<br />            中以供用户使用<br />void       setdate(struct date *dateblk)本函数将计算机内的日期改成<br />            由结构dateblk所指定的日期<br />void       gettime(struct time *timep)本函数将计算机内的时间写入结构timep中,<br />            以供用户使用<br />void       settime(struct time *timep)本函数将计算机内的时间改为<br />            由结构timep所指的时间<br />long       time(long *tloc)本函数给出自格林威治时间1970年1月1日凌晨至现在所经<br />            过的秒数,并将该值存于tloc所指的单元中.<br />int        stime(long *tp)本函数将tp所指的时间(例如由time所返回的时间)<br />            写入计算机中.</p>
		<p> </p>
<img src ="http://www.cppblog.com/horsetail/aggbug/17850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/horsetail/" target="_blank">[HORSETAIL]</a> 2007-01-20 23:11 <a href="http://www.cppblog.com/horsetail/articles/17850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>