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