当前位置:首页 » 编程语言 » c语言类似getcwd
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言类似getcwd

发布时间: 2023-07-22 20:30:36

c语言函数参考手册的目录

第1章 动态内存管理函数:alloc.h 1
1.1 brk()——重置数据段存储空间函数 2
1.2 coreleft()——获取未使用内存大小
函数 3
1.3 farcalloc()——申请远堆空间函数 4
1.4 farcoreleft()——获取远堆空闲存储
空间大小函数 5
1.5 farfree()——释放远堆空间函数 6
1.6 farmalloc()——申请远堆空间函数 6
1.7 farrealloc()——远堆存储块空间调整
函数 7
1.8 sbrk()——增加数据段存储空间函数 8
第2章 DEBUG相关函数库:
assert.h 10
assert()——错误判断函数 11
第3章 BIOS相关函数库:bios.h 12
3.1 bioscom()——串行I/O通信函数 13
3.2 biosdisk()——软硬盘I/O函数 14
3.3 biosequip()——检查设备函数 15
3.4 bioskey()——键盘接口函数 16
3.5 biosmemory()——获取存储块大小
函数 18
3.6 biostime()——设置bios时间函数 19
第4章 控制台输入/输出函数库:
conio.h 21
4.1 cgets()——从控制台输入字符串
函数 22
4.2 clreol()——清除字符到行末函数 22
4.3 clrscr()——清除文本模式窗口函数 23
4.4 cprintf()——格式化输出到屏幕
函数 24
4.5 cputs()——字符串输出到屏幕函数 25
4.6 cscanf()——格式化输入函数 26
4.7 delline()——删除行函数 27
4.8 getch()——无回显字符输入函数 28
4.9 getche()——有回显字符输入函数 28
4.10 getpass()——以密码形式输入
函数 29
4.11 gettext()——文本复制函数 30
4.12 gettextinfo()——获取文本模式的
屏幕信息函数 31
4.13 gotoxy()——设置光标函数 32
4.14 highvideo()——高亮显示文本
函数 33
4.15 insline()——插入空行函数 34
4.16 kbhit()——检查键盘按键函数 35
4.17 lowvideo()——低亮显示文本
函数 36
4.18 movetext()——移动屏幕文本
函数 37
4.19 normvideo()——正常亮显示文本
函数 38
4.20 putch()——字符输出函数 39
4.21 puttext()——文本复制函数 40
4.22 textattr()——设置文本属性函数 41
4.23 textbackground()——文本背景色
选择函数 42
4.24 textcolor()——文本字符颜色选择
函数 43
4.25 textmode()——文本模式设置函数 43
4.26 ungetch()——把字符退回键盘缓冲
区函数 44
4.27 wherex()——返回水平光标位置
函数 45
4.28 wherey()——返回垂直光标位置
函数 46
4.29 window()——定义活动文本窗口
函数 47
第5章 字符函数库:ctype.h 49
5.1 isascii()——判断字符是否为ASCII码
函数 50
5.2 isalnum()——判断字符是否为字母或
数字函数 50
5.3 isalpha()——判断字符是否为英文
字母函数 51
5.4 iscntrl()——判断字符是否为控制
字符函数 52
5.5 isdigit()——判断字符是否为十进制
数字函数 53
5.6 isgraph()——判断字符是否为除空格
外的可打印字符函数 54
5.7 islower()——判断字符是否为小写
英文字母函数 55
5.8 isprint()——判断字符是否为可打印
字符(含空格)函数 56
5.9 ispunct()——判断字符是否为标点
符号函数 57
5.10 isspace()——判断字符是否为空白
字符函数 57
5.11 isupper()——判断字符是否为大写
英文字母函数 58
5.12 isxdigit()——判断字符是否为十六
进制数字函数 59
5.13 toascii()——将字符转换为ASCII码
函数 60
5.14 tolower()——将字符转换为小写
英文字母函数 61
5.15 toupper()——将字符转换为大写
英文字母函数 62
第6章 目录操作函数库:dir.h 63
6.1 chdir()——更改当前工作目录函数 64
6.2 findfirst()——搜索当前磁盘目录
函数 65
6.3 findnext()——搜索磁盘下一个匹配的
文件函数 66
6.4 fnmerge()——构造完整路径函数 66
6.5 fnsplit()——拆分路径函数 67
6.6 getcurdir()——获取指定驱动器上的
工件目录函数 69
6.7 getcwd()——获取当前工作目录
函数 69
6.8 getdisk()——获取当前磁盘驱动器号
函数 70
6.9 mkdir()——建立目录函数 71
6.10 mktemp()——生成不重复文件名
函数 72
6.11 rmdir()——删除文件目录函数 73
6.12 setdisk()——设置当前工作驱动器
函数 73
6.13 searchpath()——查找文件函数 74
第7章 系统接口函数库:dos.h 76
7.1 allocmem()——DOS分配存储段
函数 77
7.2 bdos()——DOS系统调用函数 78
7.3 country()——返回国家相关信息
函数 79
7.4 ctrlbrk()——设置Ctrl-Break处理
程序函数 80
7.5 delay()——以毫秒为单位的延时
函数 81
7.6 dosexterr()——获取扩展DOS错误
信息函数 82
7.7 dostounix()——把DOS时间转换为UNIX时间 83
7.8 FP_OFF()——获取远指针的偏
移量 84
7.9 FP_SEG()——获取远指针的段
地址 85
7.10 freemem()——释放已分配DOS内
存块函数 86
7.11 getcbrk()——获取Ctrl-Break设置
函数 87
7.12 getdate()——获取DOS日期函数 88
7.13 getdta()——获取磁盘传输地址
函数 89
7.14 gettime()——获取系统时间函数 90
7.15 inport()——从硬件端口中输入一个
字函数 91
7.16 inportb()——从硬件端口中输入
一个字节函数 92
7.17 int86()——通用8086软中断接口
函数 93
7.18 int86x()——增强型通用8086软
中断接口函数 94
7.19 intdos()——通用DOS中断接口
函数 95
7.20 intdosx()——增强型通用DOS中断
接口函数 97
7.21 intr()——改变软中断接口函数 98
7.22 keep()——退出并继续驻留函数 99
7.23 MK_FP()——远指针合成 100
7.24 nosound()——关闭PC扬声器
函数 101
7.25 outport()——从硬件端口中输出
一个字函数 102
7.26 outportb()——从硬件端口中输出
一个字节函数 103
7.27 parsfnm()——分析文件名函数 104
7.28 peek()——从存储单元读一个字
函数 105
7.29 peekb()——从存储单元读一个字节
的函数 106
7.30 poke()——存一个字到给定存储
单元函数 108
7.31 pokeb()——存一个字节到给定
存储单元函数 109
7.32 randbrd()——随机块读函数 110
7.33 randbwr()——随机块写函数 111
7.34 segread()——读段寄存器值函数 112
7.35 setblock()——修改DOS分配地址
函数 113
7.36 setcbrk()——设置Ctrl-Break
函数 114
7.37 setdate()——设置DOS日期函数 115
7.38 settime()——设置DOS时间函数 116
7.39 setdta()——设置磁盘传输地址
函数 117
7.40 sleep()——以秒为单位的延时
函数 118
7.41 sound()——打开PC扬声器函数 119
7.42 unixtodos()——把UNIX时间转换
为DOS时间函数 120
第8章 浮点数据处理函数库:
float.h 122
8.1 _clear87()——清除状态字函数 123
8.2 _control87()——设置控制字函数 124
8.3 _status87()——获取浮点处理器状态
值函数 125
第9章 图形处理函数库:
graphics.h 126
9.1 arc()——画弧线函数 127
9.2 bar()——绘制二维条形图函数 128
9.3 bar3d()——绘制三维条形图函数 129
9.4 circle()——画圆函数 130
9.5 cleardevice()——清除图形屏幕
函数 131
9.6 clearviewport()——清除图形视区
函数 132
9.7 closegraph()——关闭图形系统
函数 133
9.8 detectgraph()——通过检测硬件确定
图形驱动程序和模式函数 134
9.9 drawpoly()——绘制多边形函数 134
9.10 ellipse()——绘制椭圆函数 135
9.11 fillellipse()——绘制并填充椭圆
函数 137
9.12 fillpoly()——绘制多边形并填充
函数 138
9.13 floodfill()——填充有界区域
函数 139
9.14 getarccoords()——取得最后一次
调用画弧线坐标函数 140
9.15 getaspectratio()——获取当前图形
模式的纵横比函数 141
9.16 getbkcolor()——获取当前背景颜色
函数 142
9.17 getcolor()——获取当前画线颜色
函数 143
9.18 getdefaultpalette()——返回默认
调色板函数 144
9.19 getdrivername()——获取图形驱动
程序名函数 145
9.20 getfillpattern()——获取用户定义的
填充模式函数 146
9.21 getfillsettings()——获取填充模式和
填充颜色函数 147
9.22 getgraphmode()——获取当前图形
模式函数 148
9.23 getimage()——将指定区域的位图
调入内存函数 149
9.24 getlinesettings()——获取当前线型、
模式和宽度函数 150
9.25 getmaxcolor()——获取最大颜色
函数 151
9.26 getmaxmode()——获取当前驱动
程序的最大图形模式 152
9.27 getmaxx()——返回屏幕的最大
x坐标函数 153
9.28 getmaxy()——返回屏幕的最大
y坐标函数 154
9.29 getmodename()——获取指定图形
模式的名称 155
9.30 getmoderange()——获取给定图形
驱动程序的模式范围函数 156
9.31 getpixel()——获取指定像素的颜色
函数 157
9.32 getpalette()——获取调色板函数 158
9.33 getpalettesize()——获取调色板的
颜色数函数 159
9.34 gettextsettings()——获取当前图形
文本字体的信息函数 160
9.35 getviewsettings()——获取当前视口
的信息函数 161
9.36 getx()——获取当前图形位置的
x坐标函数 163
9.37 gety()——获取当前图形位置的
y坐标函数 164
9.38 graphdefaults()——将所有图形设置
复位为它们的默认值函数 164
9.39 grapherrormsg()——返回一个错误
信息串的指针函数 165
9.40 _graphfreemem()——用户可修改的
图形存储区释放函数 166
9.41 _graphgetmem()——用户可修改的
图形存储区分配函数 167
9.42 graphresult()——返回最后一次不成功的图形操作的错误代码函数 168
9.43 imagesize()——返回保存位图像
所需的字节数函数 169
9.44 initgraph()——初始化图形系统
函数 170
9.45 line()——在指定两点间画直线
函数 172
9.46 linerel()——从当前位置点到相对位
移点绘制直线函数 173
9.47 lineto()——在从当前位置点到指定
点间画直线函数 174
9.48 moverel()——将当前点移动到一
相对距离函数 175
9.49 moveto()——将当前点移动到(x,y)
函数 176
9.50 outtext()——在视区显示字符串
函数 176
9.51 outtextxy()——在指定位置显示
字符串函数 177
9.52 pieslice()——绘制扇形并填充
函数 178
9.53 putimage()——在屏幕上输出位图
函数 179
9.54 putpixel()——在指定位置绘制像素
函数 180
9.55 rectangle()——绘制矩形函数 181
9.56 restorecrtmode()——将屏幕模式恢复为先前的initgraph设置函数 182
9.57 sector()——绘制并填充椭圆扇区
函数 183
9.58 setactivepage()——设置图形输出
活动页函数 184
9.59 setallpalette()——按指定方式改变
所有的调色板颜色函数 185
9.60 setaspectratio()——设置图形纵横比
函数 187
9.61 setbkcolor()——设置当前背景颜色
函数 187
9.62 setcolor()——设置当前画线颜色
函数 188
9.63 setfillpattern()——选择用户定义的
填充模式函数 189
9.64 setfillstyle()——设置填充模式和
颜色函数 191
9.65 setgraphmode()——设置当前图形
模式函数 192
9.66 setlinestyle()——设置当前画线宽度
和类型函数 193
9.67 setpalette()——设置有关当前调色板
的信息函数 193
9.68 settextjustify()——设置文本的对齐
方式函数 194
9.69 settextstyle()——设置当前的文本
属性函数 195
9.70 setusercharsize()——为矢量字体
改变字符宽度和高度函数 196
9.71 setviewport()——为图形输出设置
当前视口函数 197
9.72 setvisualpage()——设置可见图形
页号函数 198
9.73 setwritemode()——设置输出
模式 198
9.74 textheight()——获取以像素为单位
的字符串高度函数 200
9.75 textwidth()——获取以像素为单位
的字符串宽度函数 201
第10章 输入/输出函数库:io.h 203
10.1 access()——文件访问权限设置
函数 204
10.2 chmod()——改变文件访问方式
函数 205
10.3 close()——关闭文件函数 206
10.4 creat()——创建文件函数 206
10.5 p()——复制文件句柄函数 208
10.6 eof()——文件检测结束函数 209
10.7 fdopen()——连接文件句柄函数 210
10.8 filelength()——文件字节数统计
函数 211
10.9 getftime——获取文件时间函数 211
10.10 isatty()——设备类型检查函数 212
10.11 lock()——文件共享锁设置函数 213
10.12 lseek()——移动文件指针函数 214
10.13 open()——打开文件函数 216
10.14 read()——读文件函数 217
10.15 setmode()——设置文件打开方式
函数 218
10.16 tell()——获取文件指针位置
函数 219
10.17 unlock()——解除共享锁函数 219
10.18 write()——写文件函数 220
第11章 数学函数库:math.h 221
11.1 abs()——整数绝对值函数 222
11.2 acos()——反余弦值函数 223
11.3 asin()——反正弦值函数 224
11.4 atan()——反正切值函数 225
11.5 atan2()——X/Y反正切函数 226
11.6 ceil()——不小于某数的最小整数
函数 226
11.7 cos()——余弦值函数 227
11.8 cosh()——双曲余弦值函数 228
11.9 exp()——e的次幂函数 229
11.10 fabs()——浮点数绝对值函数 230
11.11 floor()——不大于某数的最大整数
函数 231
11.12 fmod()——余数函数 232
11.13 frexp()——计算浮点数尾数和指数
函数 233
11.14 hypot()——计算直角三角形斜边
长度函数 234
11.15 labs()——长整型绝对值函数 235
11.16 ldexp()——计算幂函数 235
11.17 log()——自然对数函数 236
11.18 log10()——对数函数 237
11.19 modf()——取浮点数小数部分
函数 238
11.20 pow()——计算x的y次幂函数 239
11.21 pow10()——计算10的x次幂
函数 240
11.22 sin()——正弦值函数 241
11.23 sinh()——双曲正弦值函数 242
11.24 sqrt()——平方根函数 243
11.25 tan()——正切值函数 244
11.26 tanh()——双曲正切值函数 245
第12章 内存相关函数库:mem.h 246
12.1 memccpy()——字节复制函数 247
12.2 memchr()——字符搜索函数 248
12.3 memcmp()——串比较函数 249
12.4 memcpy()——字节复制函数 250
12.5 memicmp()——串比较函数 251
12.6 memmove()——字节移动函数 252
12.7 memset()——串设置函数 253
第13章 进程管理函数库:
process.h 254
13.1 spawnl()——创建并运行子程序
函数 255
13.2 spawnle()——创建并运行子程序
函数 256
第14章 函数跳转函数库:
setjmp.h 258
14.1 longjmp()——非局部转移执行
函数 259
14.2 setjmp()——非局部转移函数 260
第15章 标准库函数库:stdarg.h 262
15.1 va_arg()——调用可变参数列表
函数 263
15.2 va_end()——停止使用可变参数
函数 264
15.3 va_start()——开始使用可变参数
函数 265
15.4 vfprintf()——格式化输出流函数 266
15.5 vfscanf()——执行流中格式化输入
函数 267
15.6 vprintf()——格式化输出函数 269
15.7 vsprintf()——格式化输出串函数 270
15.8 vscanf()——执行格式化输入
函数 271
15.9 vsscanf()——执行流中格式化输入
函数 272
第16章 输入/输出库:stdio.h 274
16.1 clearerr()——复位错误标志函数 275
16.2 fclose()——关闭流函数 276
16.3 feof()——检测流上的文件结束符
函数 276
16.4 ferror()——检测流上的错误
函数 277
16.5 fflush()——清除流函数 278
16.6 fgetc()——从流中读取字符函数 279
16.7 fgetchar()——从流中读取字符
函数 280
16.8 fgetpos()——取得当前文件句柄
函数 281
16.9 fgets()——从流中读取字符函数 282
16.10 fopen()——打开流函数 283
16.11 fprintf()——将格式化内容输出
到流函数 284
16.12 fputchar()——输出字符到标准
输出流(stdout)函数 285
16.13 fputs()——送字符串到流中
函数 286
16.14 fread()——从流中读数据函数 287
16.15 freopen()——替换流函数 288
16.16 fscanf()——从流中执行格式化
输入内容函数 289
16.17 fseek()——重定位流上的文件
指针函数 290
16.18 fsetpos()——定位流上的文件
指针函数 291
16.19 ftell()——返回当前文件指针
函数 292
16.20 fwrite()——写内容到流函数 293
16.21 getc()——从流中取字符函数 294
16.22 getchar()——从stdin流中读字符
函数 295
16.23 getche()——从控制台取字符
(带回显)函数 296
16.24 gets()——从流中取字符函数 297
16.25 getw()——从流中取整数函数 298
16.26 perror()——系统错误信息 299
16.27 printf()——格式化输出函数 300
16.28 putc()——输出一个字符到流中
函数 301
16.29 putchar()——在stdout上输出
字符函数 301
16.30 puts()——将字符串送到流中
函数 302
16.31 putw()——将字符或字送到流中
函数 303
16.32 rename()——重命名文件函数 305
16.33 remove()——删除文件函数 305
16.34 rewind()——将文件指针重新指向
流的开头函数 306
16.35 scanf()——格式化输入函数 307
16.36 setbuf()——把缓冲区与流相联
函数 308
16.37 setvbuf()——把缓冲区与流相关
函数 309
16.38 sprintf()——将格式化数据输出到
字符串中函数 310
16.39 sscanf()——执行字符串中的格式化输入函数 311
16.40 tmpfile()——以二进制方式打开
暂存文件函数 312
16.41 tmpnam()——创建一个唯一的
文件名函数 313
16.42 ungetc()——把字符退回到输入
流函数 314
16.43 ungetch()——把字符退回到键盘
缓冲区函数 315
第17章 标准工具库函数库:
stdlib.h 317
17.1 abort()——异常终止进程函数 318
17.2 atexit()——注册终止函数 318
17.3 atof()——转换字符串函数 319
17.4 atoi()——转换字符串函数 320
17.5 atol()——转换字符串函数 321
17.6 bsearch()——二分法搜索函数 322
17.7 calloc()——分配主存储器函数 323
17.8 div()——整数相除函数 324
17.9 ecvt()——转换浮点数函数 325
17.10 exit()——终止程序函数 326
17.11 fcvt()——转换浮点数函数 327
17.12 free()——释放已分配块函数 328
17.13 gcvt()——转换浮点数函数 329
17.14 getenv()——获取环境中字符串
函数 330
17.15 itoa()——转换整数函数 331
17.16 ldiv()——长整型数相除函数 332
17.17 lfind()——线性搜索函数 333
17.18 lsearch()——线性搜索函数 334
17.19 malloc()——内存分配函数 335
17.20 putenv()——加载环境中字符串
函数 336
17.21 qsort()——快速排序函数 338
17.22 rand()——随机数发生器函数 339
17.23 random()——随机数发生器
函数 340
17.24 randomize()——随机数发生器
函数 340
17.25 realloc()——重新分配主存函数 341
17.26 srand()——初始化随机数发生器
函数 342
17.27 strtod()——转换字符串函数 343
17.28 strtol()——转换字符串函数 344
17.29 swab()——交换字节函数 345
17.30 system()——发出DOS命令
函数 346
第18章 信号定义函数库:
signal.h 347
18.1 raise()——发送信号函数 348
18.2 signal()——设置信号对应动作
函数 348
第19章 字符串函数库:string.h 350
19.1 movmem()——从源字符中移动字节
到目标字符函数 351
19.2 setmem()——把内存区域的字节
设置成字符函数 352
19.3 stpcpy()——把字符串复制到数组
函数 353
19.4 strcat()——字符串追加函数 354
19.5 strchr()——查找字符串首次出现
位置函数 355
19.6 strcmp()——字符串比较函数 356
19.7 strcmpi()——字符串比较(不区分
大小写)函数 357
19.8 strcpy()——复制字符串到数组
函数 357
19.9 strcspn()——字符串查找函数 358
19.10 strp()——字符串复制函数 359
19.11 stricmp()——字符串比较(不区分
大小写)函数 360
19.12 strlen()——字符串长度函数 361
19.13 strlwr()——将字符串转换为小写
形式函数 362
19.14 strncat()——字符串尾部追加
函数 362
19.15 strncmp()——字符串比较函数 363
19.16 strncmpi()——字符串比较(不区
分大小写)函数 364
19.17 strncpy()——将字符串复制到数组
函数 365
19.18 strnicmp()——字符串比较(不区分
大小写)函数 366
19.19 strpbrk()——字符串查找函数 367
19.20 strrev()——字符串倒序函数 368
19.21 strset()——将字符串设置成指定
字符函数 369
19.22 strstr()——在字符串中查找指定
字符首次出现位置函数 370
19.23 strtok()——用分隔符分解字符串
函数 371
19.24 strupr()——将字符串转换为大写
形式函数 372
第20章 时间函数库:time.h 373
20.1 asctime()——日期和时间转换
函数 374
20.2 clock()——测定运行时间函数 375
20.3 ctime()——转换日期和时间为字符
串函数 376
20.4 difftime()——计算时间差函数 376
20.5 gmtime()——获取格林尼治结构的
时间函数 377
20.6 localtime()——获取tm结构的系统
时间函数 378
20.7 time()——获取或设置时间函数 379
20.8 tzset()——UNIX时间兼容函数 380

㈡ C语言编写"全盘搜索一个文件"的程序

用C++遍历目录
河南洛阳 祝晓鹰

--------------------------------------------------------------------------------

---- 所谓遍历目录,就是给定一个目录,访问其中的所有文件(包括子目录下的文件)。迭代是比较常用的遍历算法。本文利用C++面向对象的特性,通过一个类CBrowseDir,对目录遍历进行了封装。用户只需掌握该类四个成员函数的用法,就可以在自己的程序中,很方便地实现目录遍历。

---- 类CBrowseDir使用了迭代算法。因为算法不是本文重点,笔者不打算展开进一步讨论,对其感兴趣者可参考相关资料。

一、类成员函数说明:

---- bool SetInitDir(const char *dir);

---- 功能:设置要遍历的目录。

---- 参数:dir 指向要遍历的目录,可以使用相对路径,比如"d:..\hawk";还可以使用网络路径,比如"\\wf\d\hawk"(其中wf是主机名,d是共享目录,hawk是目录)。

---- 返回值:返回true,表示设置成功;返回false,说明目录不可用。

---- bool BeginBrowse(const char *filespec);

---- 功能:开始遍历目录中由filespec指定的文件(包括隐藏文件)。

---- 参数:filespec 指定文件类型,可以使用通配符*和?,比如"*.exe"或"a?.*"都是合法参数。注意:filespec中不能包含路径,象"hawk\*.*"是错误的。

---- 返回值:函数返回true,表明已顺利遍历完所有文件;返回false,遍历过程被用户中止。

---- virtual bool ProcessFile(const char *filename);

---- 功能:虚函数。每找到一个文件,程序就会调用ProcessFile,并把文件名作为参数传递给函数。如果函数返回false,则强制遍历中止,并导致类成员函数函数BeginBrowse返回false。 用户应该覆写此函数,以加入自己的处理代码。

---- 参数:filename 指向一个文件名。注意:filename使用绝对路径。

---- 返回值:返回true,继续遍历;否则,中止遍历。

---- virtual void ProcessDir (const char *currentdir,const char *parentdir);

---- 功能:虚函数。在遍历过程中,每进入一个子目录,程序就会调用ProcessDir,并把目录名及其上一级目录名作为参数传递给函数。如果该目录是成员函数SetInitDir指定的初始目录,则parentdir=NULL。用户可以覆写此函数,以加入自己的处理代码。比如可以在这里统计子目录的个数。

---- 参数:currentdir 指向一个子目录。
---- parentdir 指向currentdir的父目录。
---- 注意:currentdir和parentdir均使用绝对路径。

二、使用:

---- 把类CBrowseDir的头文件BrowseDir.h及实现文件BrowseDir.cpp加到项目(Project)中,然后派生自己的类并覆写虚函数ProcessFile和ProcessDir。遍历目录时,先构造一个派生类对象,用成员函数SetInitDir指定目录,然后调用BeginBrowse开始遍历。

---- 本文提供了一个例子 example.cpp,它从CBrowseDir派生出子类CStatDir,通过统计函数ProcessFile及ProcessDir的调用次数,可以得知目录中的文件及子目录个数。程序都有注释,这里就不再罗嗦了。

三、注意事项:

---- 1. 类CBrowseDir会改变当前工作目录。同一个相对路径,使用CBrowseDir前后,可能会有不同的含义。因此用户编程时,要小心使用相对路径。

---- 2. 如果项目(Project)是一个MFC应用程序,直接加入BrowseDir.h及BrowseDir.cpp会导致编译出错。这是因为缺省情况下,MFC项目使用了预编译头(Precompiled Header),而BrowseDir.h和BrowseDir.cpp是用标准C++语句编写的,没用预编译。一个解决办法是先用类向导生成类CBrowseDir的"架子",再把相应的代码拷贝过去。

---- 本文代码均在Win95、Visual C++ 5.0环境下调试通过。

附源代码:

/**************************************************
这是CBrowseDir的类定义文件 BrowseDir.h

/**************************************************
#include "stdlib.h"

class CBrowseDir
{
protected:
//存放初始目录的绝对路径,以'\'结尾
char m_szInitDir[_MAX_PATH];

public:
//缺省构造器
CBrowseDir();

//设置初始目录为dir,如果返回false,表示目录不可用
bool SetInitDir(const char *dir);

//开始遍历初始目录及其子目录下由filespec指定类型的文件
//filespec可以使用通配符 * ?,不能包含路径。
//如果返回false,表示遍历过程被用户中止
bool BeginBrowse(const char *filespec);

protected:
//遍历目录dir下由filespec指定的文件
//对于子目录,采用迭代的方法
//如果返回false,表示中止遍历文件
bool BrowseDir(const char *dir,const char *filespec);

//函数BrowseDir每找到一个文件,就调用ProcessFile
//并把文件名作为参数传递过去
//如果返回false,表示中止遍历文件
//用户可以覆写该函数,加入自己的处理代码
virtual bool ProcessFile(const char *filename);

//函数BrowseDir每进入一个目录,就调用ProcessDir
//并把正在处理的目录名及上一级目录名作为参数传递过去
//如果正在处理的是初始目录,则parentdir=NULL
//用户可以覆写该函数,加入自己的处理代码
//比如用户可以在这里统计子目录的个数
virtual void ProcessDir(const char
*currentdir,const char *parentdir);
};

/*********************************************/

这是CBrowseDir的类实现文件 BrowseDir.cpp

/***********************************************/
#include "stdlib.h"
#include "direct.h"
#include "string.h"
#include "io.h"

#include "browsedir.h"

CBrowseDir::CBrowseDir()
{
//用当前目录初始化m_szInitDir
getcwd(m_szInitDir,_MAX_PATH);

//如果目录的最后一个字母不是'\',则在最后加上一个'\'
int len=strlen(m_szInitDir);
if (m_szInitDir[len-1] != '\\')
strcat(m_szInitDir,"\\");
}

bool CBrowseDir::SetInitDir(const char *dir)
{
//先把dir转换为绝对路径
if (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL)
return false;

//判断目录是否存在
if (_chdir(m_szInitDir) != 0)
return false;

//如果目录的最后一个字母不是'\',则在最后加上一个'\'
int len=strlen(m_szInitDir);
if (m_szInitDir[len-1] != '\\')
strcat(m_szInitDir,"\\");

return true;
}

bool CBrowseDir::BeginBrowse(const char *filespec)
{
ProcessDir(m_szInitDir,NULL);
return BrowseDir(m_szInitDir,filespec);
}

bool CBrowseDir::BrowseDir
(const char *dir,const char *filespec)
{
_chdir(dir);

//首先查找dir中符合要求的文件
long hFile;
_finddata_t fileinfo;
if ((hFile=_findfirst(filespec,&fileinfo)) != -1)
{
do
{
//检查是不是目录
//如果不是,则进行处理
if (!(fileinfo.attrib & _A_SUBDIR))
{
char filename[_MAX_PATH];
strcpy(filename,dir);
strcat(filename,fileinfo.name);
if (!ProcessFile(filename))
return false;
}
} while (_findnext(hFile,&fileinfo) == 0);
_findclose(hFile);
}

//查找dir中的子目录
//因为在处理dir中的文件时,派生类的ProcessFile有可能改变了
//当前目录,因此还要重新设置当前目录为dir。
//执行过_findfirst后,可能系统记录下了相关信息,因此改变目录
//对_findnext没有影响。
_chdir(dir);
if ((hFile=_findfirst("*.*",&fileinfo)) != -1)
{
do
{
//检查是不是目录
//如果是,再检查是不是 . 或 ..
//如果不是,进行迭代
if ((fileinfo.attrib & _A_SUBDIR))
{
if (strcmp(fileinfo.name,".") != 0 && strcmp
(fileinfo.name,"..") != 0)
{
char subdir[_MAX_PATH];
strcpy(subdir,dir);
strcat(subdir,fileinfo.name);
strcat(subdir,"\\");
ProcessDir(subdir,dir);
if (!BrowseDir(subdir,filespec))
return false;
}
}
} while (_findnext(hFile,&fileinfo) == 0);
_findclose(hFile);
}
return true;
}

bool CBrowseDir::ProcessFile(const char *filename)
{
return true;
}

void CBrowseDir::ProcessDir(const char
*currentdir,const char *parentdir)
{
}

/*************************************************
这是例子example.cpp

/*************************************************
#include "stdio.h"

#include "BrowseDir.h"

//从CBrowseDir派生出的子类,用来统计目录中的文件及子目录个数
class CStatDir:public CBrowseDir
{
protected:
int m_nFileCount; //保存文件个数
int m_nSubdirCount; //保存子目录个数

public:
//缺省构造器
CStatDir()
{
//初始化数据成员m_nFileCount和m_nSubdirCount
m_nFileCount=m_nSubdirCount=0;
}

//返回文件个数
int GetFileCount()
{
return m_nFileCount;
}

//返回子目录个数
int GetSubdirCount()
{
//因为进入初始目录时,也会调用函数ProcessDir,
//所以减1后才是真正的子目录个数。
return m_nSubdirCount-1;
}

protected:
//覆写虚函数ProcessFile,每调用一次,文件个数加1
virtual bool ProcessFile(const char *filename)
{
m_nFileCount++;
return CBrowseDir::ProcessFile(filename);
}

//覆写虚函数ProcessDir,每调用一次,子目录个数加1
virtual void ProcessDir
(const char *currentdir,const char *parentdir)
{
m_nSubdirCount++;
CBrowseDir::ProcessDir(currentdir,parentdir);
}
};

void main()
{
//获取目录名
char buf[256];
printf("请输入要统计的目录名:");
gets(buf);

//构造类对象
CStatDir statdir;

//设置要遍历的目录
if (!statdir.SetInitDir(buf))
{
puts("目录不存在。");
return;
}

//开始遍历

㈢ 求C语言的常用函数,详细一点

C语言的常用库函数

函数1。absread()读磁盘绝对扇区函数
函数2。abswrite()写磁盘绝对扇区函数
函数3。atof()将字符串转换成浮点数的函数
函数4。atoi()将字符串转换成整型数的函数
函数5。atol()将字符串转换成长整型数的函数
函数6。bcd()把一个数转换成对应的BCD码的函数
函数7。bdos()
函数8。biosdisk()调用BIOS磁盘驱动程序函数
函数9。biosprint()调用BIOS打印机I/O接口的函数
函数10。calloc()分配内存函数
函数11。ceil()
函数12。cgets()读字符串函数
函数13。chdir()改变当前目录的函数
函数14。_chmod()改变文件存取权限的函数
函数15。chmod()改变文件存取权限的函数
函数16。clock()
函数17。close()关闭文件函数
函数18。closegraph()关闭图形函数
函数19。cos()
函数20。ctrlbrk()设置ctrl-break处理程序的函数
函数21。delay()暂停函数
函数22。disable()屏蔽中断的宏
函数23。enable()开硬件中断的宏
函数24。exec()加载并运行其它程序的函数族
函数25。farcalloc()从远堆中分配内存的函数
函数26。farfree()从远堆中释放一块已分配内存的函数
函数27。farmalloc()从远堆中分配内存的函数
函数28。farrealloc()调整远堆中已分配块的函数
函数29。fclose()关闭一个流函数
函数30。fcloseall()关闭打开的流的函数
函数31。feof()检查文件是否结束的函数
函数32。fgets()从流中读取一字符串的函数
函数33。findfirst()函数和findnext()函数
函数34。floodfill()填充区域的函数
函数35。floor()
函数36。fnmerge()建立文件路径函数
函数37。fnsplit()分解完整的路径名函数
函数38。fopen()打开一个流函数
函数39。FP_OFF()获取远地址偏移量的宏
函数40。fprintf()传送输出到一个流中的函数
函数41。FP_SEG()获取远地址段值的宏
函数42。fscanf()格式化输入函数
函数43。fseek()移动文件指针函数
函数44。fwrite()把参数写入流中的函数
函数45。gcvt()把双精度数转化成字符串的函数
函数46。geninterrupt()执行中断函数
函数47。getc()从流中取字符的宏
函数48。getch()从键盘无回显地读取一字符的函数
函数49。getchar()从stdin流中读取一个字符的函数
函数50。getcurdir()读取指定驱动器的当前目录的函数

函数61。getcwd()读取当前目录的函数
函数62。getdate()读取系统日期函数
函数63。getdfree()读取磁盘空闲空间的函数
函数64。getdisk()读取当前磁盘驱动器号函数
函数65。getenv()读取环境变量的当前值的函数
函数66。getimage()将指定区域的位图象存入内存的函数
函数67。getmaxx()返回屏幕上最大的X坐标值的函数
函数68。getmaxy()返回屏幕上最大的Y坐标值的函数
函数69。getpixel()读取像素颜色的函数
函数70。getpsp()
函数71。gets()从标准输入流stdio中读取一字符串的函数
函数72。gettime()读取系统时间的函数
函数73。getvect()读取中断向量函数
函数74。getx()返回当前图形方式下位置的X坐标值的函数
函数75。gety()返回当前图形方式下位置的Y坐标值的函数
函数76。imagesize()返回保存图像缓冲区大小的函数
函数77。initgraph()显示模式控制函数(初始化图形系统函数)
函数78。inport()从端口中读入一个字的函数
函数79。inportb()从端口读入一个字节的函数
函数80。int86()执行中断函数(调用8086软中断函数)
函数81。int86x()执行中断函数 (通用8086软中断接口函数)
函数82。intdos()通用dos中断接口函数
函数83。intdosx()通用dos中断接口函数
函数84。intr()执行8086软中断函数(改变软中断接口函数)
函数85。itoa()把整形数转换为字符串的函数
函数86。kbhit()检查当前按下的键的函数
函数87。keep()驻留并退出函数
函数88。log()
函数89。log10()
函数90。_lrotl()将一个无符号长整形数左循环移位的函数
函数91。_lrotr()将一个无符号长整形数右循环移位的函数
函数92。lseek()移动文件指针函数
函数93。ltoa()把长整形数转换为字符串的函数
函数94。malloc()分配内存函数
函数95。mkdir()创建目录函数
函数96。mktemp()建立一个唯一的文件名的函数
函数97。MK_FP()设置一个远指针的宏
函数98。movedata()拷贝数据函数
函数99。_open()打开一个文件进行读写的函数
函数100。open()打开文件进行读写的函数
函数101。outport()输出一个字到端口中的函数
函数102。outportb()输出一个字节到端口中的函数
函数103。outtextxy()在指定位置显示一字符串的函数
函数104。peek()返回指定内存中字的函数
函数105。peekb()返回指定内存中字节的函数
函数106。poke()在指定的内存中存储一个字的函数
函数107。pokeb()在指定的内存中存储一个字节的函数
函数108。pow()
函数109。printf()写格式化输出到stdout的函数
函数110。putch()向屏幕输出字符的函数
函数111。putchar()在stdout上输出字符的宏
函数112。putenv()将字符串放入当前环境中的函数
函数113。putimage()重新写屏函数(输出一个位图象到图形屏幕上的函数)
函数114。putpixel()写像素点函数
函数115。puts()输出一字符串到stdout(标准输出)的函数
函数116。_read()读文件函数
函数117。read()读文件函数
函数118。realloc()重新分配内存函数
函数119。rectangle()画一个矩形的函数
函数120。remove()删除一个文件的函数
函数121。rename()文件改名函数
函数122。restorecrtmode()恢复屏幕视频模式为调用initgraph前的设置的函数
函数123。rmdir()删除目录函数
函数124。_rotl()将一个无符号整形数左循环移位的函数
函数125。_rotr()将一个无符号整形数右循环移位的函数
函数126。scanf()格式化输入函数
函数127。searchpath()按dos路径查找一个文件的函数
函数128。segread()读段寄存器函数
函数129。setactivepage()设置图形输出活动页的函数
函数130。setcolor()设置当前要画的线颜色的函数
函数131。setdisk()设置当前驱动器的函数
函数132。setgraphmode()将系统设置成图形模式并清屏的函数
函数133。setlinestyle()设置当前画线宽度和类型的函数
函数134。settextstyle()显示字符的当前设置函数
函数135。setvect()设置中断向量函数
函数136。setviewport()建立视口的函数
函数137。setvisualpage()设置可见的图形页号的函数
函数138。sin()
函数139。sprintf()格式化输出到数组的函数
函数140。strcat()
函数141。tan()
函数142。_write()写文件函数
函数143。write()写文件函数

原文释义请到网络文库里搜寻字串“C语言常用函数”后下载
函数51-60因原注里排序号码少编,所以只有133个常用函数。

DOC大小是119.5KB
贡献时间:2010-09-10
贡献者:handanlinzhang

㈣ 求C语言库函数大全!请大家帮忙!谢了!

int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0
int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')
返回非0值,否则返回0
int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0
int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)
返回非0值,否则返回0
int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0
int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0
int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0
int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0
int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0
int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'),
走纸换行('\f'),垂直制表符('\v'),换行符('\n')
返回非0值,否则返回0
int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0
int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值,
否则返回0
int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')
int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')
========数学函数(原型声明所在头文件为math.h、stdlib.h、string.h、float.h)===========
int abs(int i) 返回整型参数i的绝对值
double cabs(struct complex znum) 返回复数znum的绝对值
double fabs(double x) 返回双精度参数x的绝对值
long labs(long n) 返回长整型参数n的绝对值
double exp(double x) 返回指数函数ex的值
double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中
double ldexp(double value,int exp); 返回value*2exp的值
double log(double x) 返回logex的值
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
double pow10(int p) 返回10p的值
double sqrt(double x) 返回x的开方
double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度
double atan(double x) 返回x的反正切tan-1(x)值,x为弧度
double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度
double cos(double x) 返回x的余弦cos(x)值,x为弧度
double sin(double x) 返回x的正弦sin(x)值,x为弧度
double tan(double x) 返回x的正切tan(x)值,x为弧度
double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度
double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度
double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度
double hypot(double x,double y) 返回直角三角形斜边的长度(z),
x和y为直角边的长度,z2=x2+y2
double ceil(double x) 返回不小于x的最小整数
double floor(double x) 返回不大于x的最大整数
void srand(unsigned seed) 初始化随机数发生器
int rand() 产生一个随机数并返回这个数
double poly(double x,int n,double c[])从参数产生一个多项式
double modf(double value,double *iptr)将双精度数value分解成尾数和阶
double fmod(double x,double y) 返回x/y的余数
double frexp(double value,int *eptr) 将双精度数value分成尾数和阶
double atof(char *nptr) 将字符串nptr转换成浮点数并返回这个浮点数
double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数
double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数
char *ecvt(double value,int ndigit,int *decpt,int *sign)
将浮点数value转换成字符串并返回该字符串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
将浮点数value转换成字符串并返回该字符串
char *gcvt(double value,int ndigit,char *buf)
将数value转换成字符串并存于buf中,并返回buf的指针
char *ultoa(unsigned long value,char *string,int radix)
将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数
char *ltoa(long value,char *string,int radix)
将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数
char *itoa(int value,char *string,int radix)
将整数value转换成字符串存入string,radix为转换时所用基数
double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0
int atoi(char *nptr) 将字符串nptr转换成整型数, 并返回这个数,错误返回0
long atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0
double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,
long strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,
并返回这个数,
int matherr(struct exception *e)
用户修改数学错误返回信息函数(没有必要使用)
double _matherr(_mexcep why,char *fun,double *arg1p,
double *arg2p,double retval)
用户修改数学错误返回信息函数(没有必要使用)
unsigned int _clear87() 清除浮点状态字并返回原来的浮点状态
void _fpreset() 重新初使化浮点数学程序包
unsigned int _status87() 返回浮点状态字
============目录函数(原型声明所在头文件为dir.h、dos.h)================
int chdir(char *path) 使指定的目录path(如:"C:\\WPS")变成当前的工作目录,成
功返回0
int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功
返回0
pathname为指定的目录名和文件名,如"C:\\WPS\\TXT"
ffblk为指定的保存文件信息的一个结构,定义如下:
┏━━━━━━━━━━━━━━━━━━┓
┃struct ffblk ┃
┃{ ┃
┃ char ff_reserved[21]; /*DOS保留字*/┃
┃ char ff_attrib; /*文件属性*/ ┃
┃ int ff_ftime; /*文件时间*/ ┃
┃ int ff_fdate; /*文件日期*/ ┃
┃ long ff_fsize; /*文件长度*/ ┃
┃ char ff_name[13]; /*文件名*/ ┃
┃} ┃
┗━━━━━━━━━━━━━━━━━━┛
attrib为文件属性,由以下字符代表
┏━━━━━━━━━┳━━━━━━━━┓
┃FA_RDONLY 只读文件┃FA_LABEL 卷标号┃
┃FA_HIDDEN 隐藏文件┃FA_DIREC 目录 ┃
┃FA_SYSTEM 系统文件┃FA_ARCH 档案 ┃
┗━━━━━━━━━┻━━━━━━━━┛
例:
struct ffblk ff;
findfirst("*.wps",&ff,FA_RDONLY);

int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0
void fumerge(char *path,char *drive,char *dir,char *name,char *ext)
此函数通过盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),
文件名name(TC、WPS等),扩展名ext(.EXE、.COM等)组成一个文件名
存与path中.
int fnsplit(char *path,char *drive,char *dir,char *name,char *ext)
此函数将文件名path分解成盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),
文件名name(TC、WPS等),扩展名ext(.EXE、.COM等),并分别存入相应的变量中.
int getcurdir(int drive,char *direc) 此函数返回指定驱动器的当前工作目录名称
drive 指定的驱动器(0=当前,1=A,2=B,3=C等)
direc 保存指定驱动器当前工作路径的变量 成功返回0
char *getcwd(char *buf,iint n) 此函数取当前工作目录并存入buf中,直到n个字
节长为为止.错误返回NULL
int getdisk() 取当前正在使用的驱动器,返回一个整数(0=A,1=B,2=C等)
int setdisk(int drive) 设置要使用的驱动器drive(0=A,1=B,2=C等),
返回可使用驱动器总数
int mkdir(char *pathname) 建立一个新的目录pathname,成功返回0
int rmdir(char *pathname) 删除一个目录pathname,成功返回0
char *mktemp(char *template) 构造一个当前目录上没有的文件名并存于template中
char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路径,
,此函数使用DOS的PATH变量,未找到文件返回NULL
===========进程函数(原型声明所在头文件为stdlib.h、process.h)===========
void abort() 此函数通过调用具有出口代码3的_exit写一个终止信息于stderr,
并异常终止程序。无返回值
int exec…装入和运行其它程序
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函数族装入并运行程序pathname,并将参数
arg0(arg1,arg2,argv[],envp[])传递给子程序,出错返回-1
在exec函数族中,后缀l、v、p、e添加到exec后,
所指定的函数将具有某种操作能力
有后缀 p时,函数可以利用DOS的PATH变量查找子程序文件。
l时,函数中被传递的参数个数固定。
v时,函数中被传递的参数个数不固定。
e时,函数传递指定参数envp,允许改变子进程的环境,
无后缀e时,子进程使用当前程序的环境。

void _exit(int status)终止当前程序,但不清理现场
void exit(int status) 终止当前程序,关闭所有文件,写缓冲区的输出(等待输出),
并调用任何寄存器的"出口函数",无返回值

int spawn…运行子程序
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模式下运行子程序pathname,并将参数
arg0(arg1,arg2,argv[],envp[])传递给子程序.出错返回-1
mode为运行模式
mode为 P_WAIT 表示在子程序运行完后返回本程序
P_NOWAIT 表示在子程序运行时同时运行本程序(不可用)
P_OVERLAY表示在本程序退出后运行子程序
在spawn函数族中,后缀l、v、p、e添加到spawn后,
所指定的函数将具有某种操作能力
有后缀 p时, 函数利用DOS的PATH查找子程序文件
l时, 函数传递的参数个数固定.
v时, 函数传递的参数个数不固定.
e时, 指定参数envp可以传递给子程序,允许改变子程序运行环境.
当无后缀e时,子程序使用本程序的环境.

int system(char *command) 将MSDOS命令command传递给DOS执行
======转换子程序(函数原型所在头文件为math.h、stdlib.h、ctype.h、float.h)========
char *ecvt(double value,int ndigit,int *decpt,int *sign)
将浮点数value转换成字符串并返回该字符串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
将浮点数value转换成字符串并返回该字符串
char *gcvt(double value,int ndigit,char *buf)
将数value转换成字符串并存于buf中,并返回buf的指针
char *ultoa(unsigned long value,char *string,int radix)
将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数
char *ltoa(long value,char *string,int radix)
将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数
char *itoa(int value,char *string,int radix)
将整数value转换成字符串存入string,radix为转换时所用基数
double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0
int atoi(char *nptr) 将字符串nptr转换成整型数, 并返回这个数,错误返回0
long atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0
double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,
long strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,
并返回这个数,
int toascii(int c) 返回c相应的ASCII
int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')
int _tolower(int ch) 返回ch相应的小写字母('a'-'z')
int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')
int _toupper(int ch) 返回ch相应的大写字母('A'-'Z')

㈤ c语言中如何得到当前文件所在位置

如果是通过open方式打开的,那么第一个参数就是文件路径信息:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *path, int oflag, /* mode_t mode */...);

如果是通过fopen方式打开的,那么第一个参数就是文件路径信息:
#include <stdio.h>
FILE *fopen(const char *filename, const char *mode);

无论通过open还是fopen打开文件,都必须先知道文件路径信息,尽管可能是相对路径。
如果知道了filename的内容,我们就可以定位它的绝对路径,也就是你说的完全路径。

1. filename本身就是绝对路径,ok。
2. filename是相对路径,那么先通过getcwd获取进程的执行路径,然后再获取绝对路径即可。
#include <unistd.h>
extern char *getcwd(char *buf, size_t size);

但是,如果进程在打开文件后又执行了chdir、fchdir之类函数的话,估计就不能够再获取文件路径信息了。
#include <unistd.h>
int chdir(const char *path);
int fchdir(int fildes);

㈥ c语言常用函数有哪些主要掌握的要点是什么

标准头文件包括:
<asset.h> <ctype.h> <errno.h> <float.h>
<limits.h> <locale.h> <math.h> <setjmp.h>
<signal.h> <stdarg.h> <stddef.h> <stdlib.h>
<stdio.h> <string.h> <time.h>
一、标准定义(<stddef.h>)
文件<stddef.h>里包含了标准库的一些常用定义,无论我们包含哪个标准头文件,<stddef.h>都会被自动包含进来。
这个文件里定义:
l 类型size_t (sizeof运算符的结果类型,是某个无符号整型);
l 类型ptrdiff_t(两个指针相减运算的结果类型,是某个有符号整型);
l 类型wchar_t (宽字符类型,是一个整型,其中足以存放本系统所支持的所有本地环境中的字符集的所有编码值。这里还保证空字符的编码值为0);
l 符号常量NULL (空指针值);
l 宏offsetor (这是一个带参数的宏,第一个参数应是一个结构类型,第二个参数应是结构成员名。
offsetor(s,m)求出成员m在结构类型t的变量里的偏移量)。
注:其中有些定义也出现在其他头文件里(如NULL)。
二、错误信息(<errno.h>)
<errno.h>定义了一个int类型的表达式errno,可以看作一个变量,其初始值为0,一些标准库函数执行中出错时将它设为非0值,但任何标准库函数都设置它为0。
<errno.h>里还定义了两个宏EDOM和ERANGE,都是非0的整数值。数学函数执行中遇到参数错误,就会将errno置为EDOM,如出现值域错误就会将errno置为ERANGE。
三、输入输出函数(<stdio.h>)
文件打开和关闭:
FILE *fopen(const char *filename, const char *mode);
int fclose(FILE * stream);
字符输入输出:
int fgetc(FILE *fp);
int fputc(int c, FILE *fp);
getc和putc与这两个函数类似,但通过宏定义实现。通常有下面定义:
#define getchar() getc(stdin)
#define putchar(c) putc(c, stdout)
int ungetc(int c, FILE* stream);//把字符 c 退回流 stream
格式化输入输出:
int scanf(const char *format, ...);
int printf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sscanf(char *s, const char *format, ...);
int sprintf(char *s, const char *format, ...);
行式输入输出:
char *fgets(char *buffer, int n, FILE *stream);
int fputs(const char *buffer, FILE *stream);
char *gets(char *s);
int puts(const char *s);
直接输入输出:
size_t fread(void *pointer, size_t size, size_t num, FILE *stream);
size_t fwrite(const void *pointer, size_t size, size_t num, FILE *stream);

㈦ 在C语言中有那些函数名

仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧.对象反射库、调试工具及代码分析器,经常会需要在运行时访问函数的名称,直到不久前,唯一能完成此项任务并且可移植的方法,是手工在函数体内嵌入一个带有该函数名的硬编码字符串,不必说,这种方法非常单调无奇,并且容易导致错误。本文将要演示怎样使用新的C99特性,在运行时获取函数名。

那么怎样以编程的方式从当前运行的函数中得到函数名呢?

答案是:使用__FUNCTION__ 及相关宏。

引出问题

通常,在调试中最让人心烦的阶段,是不断地检查是否已调用了特定的函数。对此问题的解决方法,一般是添加一个cout或printf()——如果你使用C语言,如下所示:

void myfunc()
{
cout<<"myfunc()"<<endl;
//其他代码
}

通常在一个典型的工程中,会包含有数千个函数,要在每个函数中都加入一条这样的输出语句,无疑难过上“蜀山”啊,因此,需要有一种机制,可以自动地完成这项操作。

获取函数名

作为一个C++程序员,可能经常遇到 __TIME__、__FILE__、__DATE__ 这样的宏,它们会在编译时,分别转换为包含编译时间、处理的转换单元名称及当前时间的字符串。

在最新的ISO C标准中,如大家所知的C99,加入了另一个有用的、类似宏的表达式__func__,其会报告未修饰过的(也就是未裁剪过的)、正在被访问的函数名。请注意,__func__不是一个宏,因为预处理器对此函数一无所知;相反,它是作为一个隐式声明的常量字符数组实现的:

static const char __func__[] = "function-name";

在function-name处,为实际的函数名。为激活此特性,某些编译器需要使用特定的编译标志,请查看相应的编译器文档,以获取具体的资料。

有了它,我们可免去大多数通过手工修改,来显示函数名的苦差事,以上的例子可如下所示进行重写:

void myfunc()
{
cout<<"__FUNCTION__"<<endl;
}

官方C99标准为此目的定义的__func__标识符,确实值得大家关注,然而,ISO C++却不完全支持所有的C99扩展,因此,大多数的编译器提供商都使用 __FUNCTION__ 取而代之,而 __FUNCTION__ 通常是一个定义为 __func__ 的宏,之所以使用这个名字,是因为它已受到了大多数的广泛支持。

在Visual Studio 2005中,默认情况下,此特性是激活的,但不能与/EP和/P编译选项同时使用。请注意在IDE环境中,不能识别__func__ ,而要用__FUNCTION__ 代替。

Comeau的用户也应使用 __FUNCTION__ ,而不是 __func__ 。

C++ BuilderX的用户则应使用稍稍不同的名字:__FUNC__ 。

GCC 3.0及更高的版本同时支持 __func__ 和__FUNCTION__ 。

一旦可自动获取当前函数名,你可以定义一个如下所示显示任何函数名的函数:

void show_name(const char * name)
{
cout<<name<<endl;
}

void myfunc()
{
show_name(__FUNCTION__); //输出:myfunc
}

void foo()
{
show_name(__FUNCTION__); //输出:foo
}

因为 __FUNCTION__ 会在函数大括号开始之后就立即初始化,所以,foo()及myfunc()函数可在参数列表中安全地使用它,而不用担心重载。

签名与修饰名

__FUNCTION__ 特性最初是为C语言设计的,然而,C++程序员也会经常需要有关他们函数的额外信息,在Visual Studio 2005中,还支持另外两种非标准的扩展特性:__FUNCDNAME__ 与 __FUNCSIG__ ,其分别转译为一个函数的修饰名与签名。函数的修饰名非常有用,例如,在你想要检查两个编译器是否共享同样的ABI时,就可派得上用场,另外,它还能帮助你破解那些含义模糊的链接错误,甚至还可用它从一个DLL中调用另一个用C++链接的函数。在下例中,show_name()报告了函数的修饰名:

void myfunc()
{
show_name(__FUNCDNAME__); //输出:?myfunc@@YAXXZ
}

一个函数的签名由函数名、参数列表、返回类型、内含的命名空间组成。如果它是一个成员函数,它的类名和const/volatile限定符也将是签名的一部分。以下的代码演示了一个独立的函数与一个const成员函数签名间的不同之处,两个函数的名称、返回类型、参数完全相同:

void myfunc()
{
show_name(__FUNCSIG__); // void __cdecl myfunc(void)
}

struct S
{
void myfunc() const
{
show_name(__FUNCSIG__); //void __thiscall S::myfunc(void) const
}
};