《C语言编程技巧.doc》由会员分享,可在线阅读,更多相关《C语言编程技巧.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流C语言编程技巧【精品文档】第 23 页C语言编程常见问题解答之常用函数的包含文件(1) 函数 包含 类别 功能_atold math.h 数学子程序 把字符串转换为浮点数_beginthread process.h 进程控制子程序 启动执行一个新线程_bios_disk bios.h 接口子程序 输出BIOS磁盘驱动器服务_bios_equiplist bios.h 接口子程序 检查设备_bios_keybrd bios.h 接口子程序 直接使用BIOS的键盘接口_bios_memsize biosd.h 存储子程序 返回内存大小_bios_printe
2、r bios.h 接口子程序 直接调用BIOS服务进行打印机I/O_bios_timeofday bios.h 时间和日期子程序 读取或设置BIOS时钟_biosserialcom bios.h 接口子程序 进行串行I/O_c_exit process.h 进程控制子程序 不终止程序执行如同_exit的清除_cexit process.h 进程控制子程序 不终止程序执行如同_exit的清除_chdrive direct.h 目录控制子程序 设置当前驱动器_chian_intr dos.h 接口子程序_chmode io.h 输入输出子程序 改变文件的存取权限_clear87 float.h 数
3、学子程序 清除浮点状态字_close io.h 输入输出子程序 关闭文件(3。1)以下版本_control87 float.h 数学子程序 处理浮点控制字_creat io.h 输入输出子程序 创建一个新文件或重写一个已存在的文件_disable dos.h 接口子程序 屏蔽中断_dos_allocmem dos.h 存储子程序_dos_close dos.h 输入输出子程序 关闭一个文件_dos_craete dos.h 输入输出子程序 创建一个新文件或重写一个已存在的文件_dos_createnew dos.h 输入输出子程序 创建一个新文件_dos_findfirst dos.h 目录控
4、制子程序 搜索一个磁盘目录_dos_findnext dos.h 目录控制子程序 继续_dos_findfirst的搜索_dos_freemem dos.h 存储子程序_dos_getdate dos.h 时间和日期子程序 取得和设置系统日期_dos_getdiskfre dos.h 目录控制子程序 取得磁盘空闲空间_dos_getdrive dos.h 目录控制子程序 取得和设置当前驱动器号_dos_getfileatt dos.h 输入输出子程序 取得和设置文件属性_dos_getftime dos.h 输入输出子程序 取得和设置文件日期和时间_dos_gettime dos.h 时间和日
5、期子程序 取得和设置系统时间_dos_getvect dos.h 接口子程序 取得中断向量_dos_keep dos.h 接口子程序_dos_open dos.h 输入输出子程序 打开一个文件用于读和写_dos_read dos.h 输入输出子程序 从文件读_dos_setblock dos.h 存储子程序_dos_setdate dos.h 时间和日期子程序 设置系统日期_dos_setdrive dos.h 目录控制子程序 设置当前驱动器号_dos_setfileatt dos.h 输入输出子程序 设置文件属性_dos_setfitme dos.h 输入输出子程序 设置文件时间_dos_s
6、ettime dos.h 时间和日期子程序 设置系统时间_dos_setvect dos.h 接口子程序 设置中断向量_dos_write dos.h 输入输出子程序 写向文件_enable dos.h 接口子程序 开硬件中断_exit process.h 进程控制子程序 终止程序_fpresent float.h 数学子程序 重新初始化浮点数学包_fsopen stdio.h 输入输出子程序_fullpath stdlib.h 目录控制子程序 把相对路径名转换为绝对路径名_getdcwd direct.h 目录控制子程序 取得指定驱动器的当前目录_getdrive direct.h 目录控制
7、子程序 取得当前驱动器号_graphfreemem graphics.h 图形子程序 可修改的图形内存释放函数_graphgetmem graphics.h 图形子程序 可修改的图形内存分配函数_harderr dos.h 接口子程序 建立一个硬件错误处理程序_hardresume dos.h 接口子程序 硬件错误处理函数_hardretn dos.h 接口子程序 硬件错误处理函数_heapadd alloc.h 添加一个块到堆上_heapmin malloc.h 释放无用的堆区域_hea视频教程pset malloc.h 用一个常量值填充堆上的自由块_initEasyWin io.h 初始化
8、Ease windows_lrotl stdlib.h 数学子程序 将无符号长整型数向左循环移位_lrotr stdlib.h 数学子程序 将无符号长整型数向右循环移位_makeepath stdlib.h 目录控制子程序 生成一个路径_matherrl math.h 诊断子程序 用户可修改的数学错误处理程序_matherrl math.h 数学子程序 用户可修改的数学错误处理程序_open io.h 输入输出子程序 打开一个文件进行读和写_OvrInitEms dos.h 初始化复盖治理程序用于交换EMS内存_OvrInitExt dos.h 初始化复盖治理程序用于交换EXT内存_pclos
9、e stdio.h 等待一个管道命令结束_popen stdio.h 创建一个子命令处理程序管道_read io.h 输入输出子程序 读文件(3。1以下版本)_rotl stdlib.h 嵌入子程序 将一个无符号整数左循环移位_rotl stdlib.h 数学子程序 把一个无符号整数左循环移位_rotr stdlib.h 嵌入子程序 将一个无符号整数向左循环移位_searchstr stdlib.h 为某文件查找某些目录_setcursortype graphics.h 图形子程序 选择光标类型_setcursortype conio.h 输入输出子程序 选择光标类型_setcursortyp
10、e conio.h 文本窗口显示子程 选择光标类型_splitpath stdlib.h 目录控制子程序 将一个全限定的路径名分解各个成份_status87 float.h 数学子程序 取浮点状态_strdate stdlib.h 转换子程序 把当前日期转换成字符串_strerror string.h stdio 输入输出子程序 建立用户定义的错误信息_strtime stdlib.h 转换子程序 转换当前日期为字符串_strtold stdlib.h 转换子程序_strtold stdlib.h 数学子程序_tolower ctype.h 转换子程序 把字符转换成小写字母_write io.
11、h 输入输出子程序 写文件abort process.h 进程控制子程序 异常终止一进程abs stdlib.h compl 数学子程序 返回整数的绝对值absl math.h 数学子程序 计算复数的模absread dos.h 接口子程序 读磁盘的绝对扇区abswrite dos.h 接口子程序 写磁盘的绝对扇区access io.h 输入输出子程序 确定文件的存取权限acos math.h complex 数学子程序 计算反余弦值acosl math.h 数学子程序 计算反余弦值alloca malloc.h 存储子程序 分配临时堆栈空间allocm dos.h 存储子程序 分配DOS内存
12、arc graphics.h 图形子程序 画园弧arg complex.h 数学子程序 求复平面中一个复数的弧度asctime time.h 时间和日期子程序 转换日期和时间为对应的ASCII码asin math.h complex 数学子程序 反正弦函数asinl math.h 数学子程序 反正弦函数assert assert.h 诊断子程序 条件终止函数atan2 math.h complex 数学子程序 计算y/x的反正切值atan2l math.h 数学子程序 计算y/x的反正切值atof stdlib.h 转换子程序 将字符串转换为浮点数at of math.h stdlib. 数学
13、子程序 将字符串转换成浮点数atoi stdlib.h 转换子程序 将字符串转换为整数atoi stdlib.h 数学子程序 把字符串转换成整型数atol stdlib.h 转换子程序 将字衔串转换成长整型数atol stdlib.h 数学子程序 抬字符串转换为长整型bar graphics.h 图形子程序 画二维条形图bar3d graphics.h 图形子程序 画一个三维条形图bcd bcd.h 数学子程序 把一个数转换为相对应的BCD码bdos dos.h 接口子程序 DOS系统调用bdosptr dos.h 接口子程序 DOS系统调用bioscom bios.h 接口子程序 I/O通讯
14、biosdisk bios.h 接口子程序 调用BIOS磁盘驱动程序bioseqiplist bios.h 接口子程序 检查设备bioskey bios.h 接口子程序 调用BIOS的键盘接口biosmemory bios.h 接口子程序 返加内存的大小biosprintf bios.h 接口子程序 调用BIOS的打印I/O接口biostime bios.h 接口子程序 读取或设置BIOS时钟brk alloc.h 存储子程序 改变数据段内存分配cabs math.h 数学子程序 计算复数的模calloc alloc.h stdlib 存储子程序 分配内存ceil math.h 数学子程序 舍
15、入ceill math.h 数学子程序 舍入cgets conio.h 输入输出子程序 读字符串chdir dir.h 目录控制子程序 改变当前目录chmod io.h 输入输出子程序 改变文件存取权限chsize io.h 输入输出子程序 修改文件长度circle graphics.h 图形子程序 画园cleardevice graphics.h 图形子程序 清图形屏幕clearerr io.h 输入输出子程序 复位错误标志clearviewport graphics.h 图形子程序 清除当前图形窗口close io.h 输入输出子程序 关闭文件closedir direct.h 目录控制子
16、程序 关闭目录流closegraph graphics.h 图形子程序 关闭图形系统clreol conio.h 文本窗口显示子程 清除从当前光标位置到行尾的字符clrscr conio.h 文本窗口显示子程 清除文本窗口,并把光标放在左上角complex complex.h 数学子程序 创建复数conj complex.h 数学子程序 求复数的共轭复数coreleft alloc.h stdlib 存储子程序 返顺未使用的内存大小cos math.h complex 数学子程序 计算余弦值cosh math.h complex 数学子程序 计算双曲余弦值coshl math.h 数学子程序
17、计算双曲余弦值cosl math.h 数学子程序 计算余弦值country dos.h 接口子程序 读取与特定国家有关的格式cprintf conio.h 输入输出子程序 格式化并输出数据到屏幕cputs conio.h 输入输出子程序 输出一字符串到屏幕creat io.h 输入输出子程序 创建一个新文件或重写一个已存在的文件creatnew io.h 输入输出子程序 创建新文件creattemp io.h 输入输出子程序 创建一个文件名唯一的文件cscanf conio.h 输入输出子程序 从控制台执行格式化输入ctime time.h 时间和日期子程序 把日期和时间转化为对应的字符串ct
18、rlbrk dos.h 接口子程序 设置CTRL-BREAK处理程序delay dos.h 杂类子程序 暂停DOSdelline conio.h 文本窗口显示子程 在文本窗口中删去一行detectgraph graphics.h 图形子程序 检测硬件并确定使用何种图形驱运程序和图形difftime time.h 时间和日期子程序 计算二个时刻的时间差disable dos.h 接口子程序 屏蔽中断css.shtml target=_blank title = div视频教程div math.h 数学子程序 将二个整数相除,返回商和余数dosexterr dos.h 接口子程序 获取扩展错误信息
19、dostounix dos.h 时间和日期子程序 把日期和时间转换成UNIX格式drawpoly graphics.h 图形子程序 绘制多边形dup io.h 输入输出子程序 复制文件句柄dup2 io.h 输入输出子程序 将一个文件句柄复制到一个已有的文件句柄ecvt stdlib.h 转换子程序 把浮点数转换成字符串ecvt stdlib.h 数学子程序 把浮点数转换为字符串elipse graphics.h 图形子程序 绘制椭园enable dos.h 接口子程序 开硬件中断eof io.h 输入输出子程序 检测文件是否结束execle process.h 进程控制子程序 装入并运行其它
20、程序execlp process.h 进程控制子程序 装入并运行其它程序execlpe process.h 进程控制子程序 装入并运行其它程序exect process.h 进程控制子程序execv process.h 进程控制子程序 装入并运行其它程序 本文章来自 21视频教程网 C语言编程常见问题解答之常用函数的包含文件(1)_C语言程序设计教程 原文链接:C语言编程常见问题解答之杂项(Miscellaneous)(2) 请参见: 2012怎样把数据从一个程序传递到另一个程序? 2017可以使热启动(Ctrl+Alt+Delete)失效吗? 2110什么是动态连接? 209 为什么要使用静
21、态变量 静态变量作为一个局部变量是很合适的,它在函数退出后不会失去其本身的值。例如,有一个要被调用很多次的函数,它的一部分功能就是计算自己被调用的次数。你不能用一个简单的局部变量来实现这部分功能,因为每次进入该函数时,这个变量都没有被初始化。假如把这个计数变量说明为静态的,那么它就会象一个全局变量那样保留自己的当前值。 那么为什么不直接使用一个全局变量呢?你可以使用一个全局变量,而且这样做没有错误。问题是使用了大量全局变量的程序维护起来很麻烦,尤其是有许多函数都各自访问一个全局变量的程序。再说一遍,这样做没有错误,这只是一个程序设计和可读性是否好的问题。假如你把这样的变量说明为静态的,你就可以
22、提醒自己(或者其它可能读你的程序的人)它是局部变量,但要象全局变量那样被处理(保留自己的值)。假如你把它说明为全局的,那么读这个程序的人一定会认为有很多地方要引用它,尽管实际上并不是这样。 总而言之,当你需要一个能保持自己的值的局部变量时,使用静态变量是一种好的编程习惯。 请参见: 217可以头文件中说明static变量吗? 2010 怎样在一个程序后面运行另一个程序? 显然,在一个程序后面运行另一个程序的最简单的办法是把它们依次列入一个批处理文件中,在执行该批处理文件时,其中所列的程序就会依次运行。然而,这是一种人们已经知道的办法。 在c或DOS中,都没有一种特定的方法来完成“在一个程序结束
23、后运行另一个程序”这样一种函数调用。然而,c提供了两组函数,它们答应一个程序随时可以运行另一个程序,而后者的运行将结束前者的运行。假如你将这样的一个函数调用放到第一个程序的末尾,你就能达到上述目的。C所提供的这两组函数实际上是由exec()和spawn()所代表的两个函数族,其中的每一个函数都具有一种区别于同族其它函数的功能。exec()函数族包括这样一些成员:execl(),execle(),execlp(),execlpe(),execv(),execve(),execvp()和execvpe()。下面列出了这此函数名中的e,l,p和v等后缀的含义: e 明确地把一个指向环境参数的指针数组
24、传递给子进程 l 把命令参数逐个传递给要执行的程序 p 通过环境变量PATH找到要执行的文件 v 把命令行参数以一个指针数组的形式传递给要执行的程序 在程序中选用哪一个函数完全取决于你以及要执行的程序的需要。下例中的程序调用了其参数由命令行指定的另一个程序:# include # include char * envString = / * environment for the app * / COMM VECTOR=0x63, /* communications vector */ PARENT=LAUNCH. EXE, / * name of this app * / EXEC=EDIT
25、. COM, / * name of app to exec * / NULL ; / * must be NULL-terminated * /voidmain(int argc, char *argv) / * Call the one with variable argumets and an enviroffment * / _execvpe ( EDIT. COM, argv, envString ) ; printf(If you can read this sentence, the exec didnt happen!n) ; 上面这个短小的例子调用_execvpe()来执行D
26、OS的文件编辑器EDITCOM,EDIT程序的参数来自该例的命令行。在调用execvpe()函数后,上例中的程序就结束了;当EDIT程序退出时,你将返回到DOS提示符。假如printf()语句的打印内容显示在屏幕上,则说明_execvpe()函数调用出了问题,因为假如它调用成功,就不会有上述结果。注重,上例所提供的EDIT.COM的环境变量是没有任何意义的,然而,假如上例要执行一个需要环境变量的程序,那么所提供的环境变量就能供该程序使用了。 用spawn()函数同样可以完成上例所做的工作。spawn()函数族包括这样一些成员: spawnl(),spawnle()。spawnlp(),spaw
27、nlpe(),spawnv(),spawnve(),spawnvp()和spawnvpe()。这些函数名中的e,l,p和v等后缀的含义与exec()族函数名中的相同。实际上,spawn()函数族与exec()函数族基本相同,只不过有一点小小的差别spawn()函数既可以在结束原来的程序后启动另一个程序,也可以启动另一个程序并在该程序结束后返回到原来的程序。spawn()函数的参数与exec()函数的基本相同,只不过需要增加一个参数一你必须用_P_OVERLAY(结束原来的程序)或_P_WAIT(结束后返回到原来的程序)作为spawn()函数的第一个参数。下例用spawn()函数完成了与前面的例
28、子相同的工作:# include # include char * envString = / * environment for the app * / COMM VECTOR = 0x63, / * communications vector * / PARENT=LAUNCH. EXE, / * name of this app * / EXEC=EDIT. COM , / * name of app to exec * / NULL ; / * must be NULL-terminated * /voidmain(int argc, char *argv) / * Call the
29、one with variable argumets and an environment * / _spawnvpe (_P_OVERLAY, EDIT. COM, argv, envString) ; printf(If you can read this sentence, the exec didnt happen!n ); 这里唯一的区别是exec”变为spawn,并且增加了模式(mode)参数。spawn()函数有覆盖和等待两种相对立的功能,它使你可以在spawn()运行期间做出是等待还是离开的决定。实现上,P_WAIT参数回答了下一个问题。 请参见: 2011 怎样在一个程序执行
30、期间运行另一个程序? 2011 怎样在一个程序执行期间运行另一个程序? 正如你在2010的例子中看到的那样,spawn()函数族答应在一个程序中启动另一个程序,并在后者结束后返回到前者之中。有关spawn()函数的背景知识和例子(你只需把其中的_P_OVERLAY改为_P_WAIT) 请参见2010。 然而,还有另外一种方法可以完成这项工作,即使用system()函数。system()函数与exec()或spawn()函数相似,但也不有同之处。除了挂起(而不是结束)当前程序去执行新程序外,system()还要启动COMMANDCOM命令翻译程序(或者其它任何运行在你的计算机上的命令翻译程序)。
31、假如它找不到COMMANDCOM或类似的程序,那么它就不会去执行所要求的程序(这一点与exec()或spawn()函数不同)。下例是调用EDITCOM打开一个文件的另一个程 序版本,其中的文件名也来自该例的命令行:# include # include # inclued char argStr255 ;voidmain(int argc, char *argv) int ret ; / * Have EDIT open a file called HELLO if no arg given * / sprintf (argStr ,EDIT %s, (argv1 = NULL?HELLO :
32、argyll3) ) ; / * Call the one with variable arguments and an environment * / ret = sytem (argStr) ; printf(system() returned %dn ,ret) ; 与2010中的例子一样(使用_P_WAIT),在system()调用后面的print()语句会被执行,因为原来的程序只是被挂起而不是被终止。在每一种情况下,system()都会返回一个表示是否成功地运行了所指定的程序的值,而不会返回所指定的程序的返回值。 请参见: 2010怎样在一个程序后面运行另一个程序? 2012 怎样把数据从一个程序传给另一个程序? 有好几种基本的方法可以完成这项任务-你可以通过文件或内存来传递这些数据。这些方法的步骤都相当简洁:首先,定义在何处存放数据,如何获取数据,以及如何通知另一个程序来获取或设置数据;然后,你就可以获取或设置数据了,尽管使用文件的技术定义和实现起来都比较简单,但它的速度往往比较慢(并且轻易引起混乱)。因此,这里重点讨论内存数据转移技术。下面将依次具体地分析这一过程的每一个环节: 定义在何处存放数据。当你编写要共享数据的两个程序时,你应该让程序知道要访