十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
字符处理函数
成都创新互联公司是专业的漾濞网站建设公司,漾濞接单;提供做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行漾濞网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换
头文件 ctype.h
函数列表
函数类别 函数用途 详细说明
字符测试 是否字母和数字 isalnum
是否字母 isalpha
是否控制字符 iscntrl
是否数字 isdigit
是否可显示字符(除空格外) isgraph
是否可显示字符(包括空格) isprint
是否既不是空格,又不是字母和数字的可显示字符 ispunct
是否空格 isspace
是否大写字母 isupper
是否16进制数字(0-9,A-F)字符 isxdigit
字符大小写转换函数 转换为大写字母 toupper
转换为小写字母 tolower
地区化
本类别的函数用于处理不同国家的语言差异。
头文件 local.h
函数列表
函数类别 函数用途 详细说明
地区控制 地区设置 setlocale
数字格式约定查询 国家的货币、日期、时间等的格式转换 localeconv
数学函数
本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51)
头文件 math.h
函数列表
函数类别 函数用途 详细说明
错误条件处理 定义域错误(函数的输入参数值不在规定的范围内)
值域错误(函数的返回值不在规定的范围内)
三角函数 反余弦 acos
反正弦 asin
反正切 atan
反正切2 atan2
余弦 cos
正弦 sin
正切 tan
双曲函数 双曲余弦 cosh
双曲正弦 sinh
双曲正切 tanh
指数和对数 指数函数 exp
指数分解函数 frexp
乘积指数函数 fdexp
自然对数 log
以10为底的对数 log10
浮点数分解函数 modf
幂函数 幂函数 pow
平方根函数 sqrt
整数截断,绝对值和求余数函数 求下限接近整数 ceil
绝对值 fabs
求上限接近整数 floor
求余数 fmod
本分类函数用于实现在不同底函数之间直接跳转代码。 头文件 setjmp.h io.h
函数列表
函数类别 函数用途 详细说明
保存调用环境 setjmp
恢复调用环境 longjmp
信号处理
该分类函数用于处理那些在程序执行过程中发生例外的情况。
头文件 signal.h
函数列表
函数类别 函数用途 详细说明
指定信号处理函数 signal
发送信号 raise
可变参数处理
本类函数用于实现诸如printf,scanf等参数数量可变底函数。
头文件 stdarg.h
函数列表
函数类别 函数用途 详细说明
可变参数访问宏 可变参数开始宏 va_start
可变参数结束宏 va_end
可变参数访问宏 访问下一个可变参数宏 va_arg
输入输出函数
该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现
头文件 stdio.h
函数列表
函数类别 函数用途 详细说明
文件操作
删除文件 remove
修改文件名称 rename
生成临时文件名称 tmpfile
得到临时文件路径 tmpnam
文件访问 关闭文件 fclose
刷新缓冲区 fflush
打开文件 fopen
将已存在的流指针和新文件连接 freopen
设置磁盘缓冲区 setbuf
设置磁盘缓冲区 setvbuf
格式化输入与输出函数 格式输出 fprintf
格式输入 fscanf
格式输出(控制台) printf
格式输入(控制台) scanf
格式输出到缓冲区 sprintf
从缓冲区中按格式输入 sscanf
格式化输出 vfprintf
格式化输出 vprintf
格式化输出 vsprintf
字符输入输出函数 输入一个字符 fgetc
字符串输入 fgets
字符输出 fputc
字符串输出 fputs
字符输入(控制台) getc
字符输入(控制台) getchar
字符串输入(控制台) gets
字符输出(控制台) putc
字符输出(控制台) putchar
字符串输出(控制台) puts
字符输出到流的头部 ungetc
直接输入输出 直接流读操作 fread
直接流写操作 fwrite
文件定位函数 得到文件位置 fgetpos
文件位置移动 fseek
文件位置设置 fsetpos
得到文件位置 ftell
文件位置复零位 remind
错误处理函数 错误清除 clearerr
文件结尾判断 feof
文件错误检测 ferror
得到错误提示字符串 perror
实用工具函数
本分类给出了一些函数无法按以上分类,但又是编程所必须要的。
头文件 stdlib.h
函数列表
函数类别 函数用途 详细说明
字符串转换函数 字符串转换为整数 atoi
字符串转换为长整数 atol
字符串转换为浮点数 strtod
字符串转换为长整数 strtol
字符串转换为无符号长整型 strtoul
伪随机序列产生函数 产生随机数 rand
设置随机函数的起动数值 srand
存储管理函数 分配存储器 calloc
释放存储器 free
存储器分配 malloc
重新分配存储器 realloc
环境通信 中止程序 abort
退出程序执行,并清除环境变量 atexit
退出程序执行 exit
读取环境参数 getenv
程序挂起,临时执行一个其他程序 system
搜索和排序工具 二分查找(数据必须已排序) bsearch
快速排序 qsort
整数运算函数 求绝对值 abs
div
得到除法运算底商和余数
求长整形底绝对值 labs
求长整形除法的商和余数 ldiv
多字节字符函数 得到多字节字符的字节数 mblen
得到多字节字符的字节数 mbtowc
多字节字符转换 wctomb
多字节字符的字符串操作 将多字节串转换为整数数组 mbstowcs
将多字节串转换为字符数组 mcstowbs
字符串处理
本分类的函数用于对字符串进行合并、比较等操作
头文件 string.h
函数列表
函数类别 函数用途 详细说明
字符串拷贝 块拷贝(目的和源存储区不可重叠) memcpy
块拷贝(目的和源存储区可重叠) memmove
串拷贝 strcpy
按长度的串拷贝 strncpy
字符串连接函数 串连接 strcat
按长度连接字符串 strncat
串比较函数 块比较 memcmp
字符串比较 strcmp
字符串比较(用于非英文字符) strcoll
按长度对字符串比较 strncmp
字符串转换 strxfrm
字符与字符串查找 字符查找 memchr
字符查找 strchr
字符串查找 strcspn
字符串查找 strpbrk
字符串查找 strspn
字符串查找 strstr
字符串分解 strtok
杂类函数 字符串设置 memset
错误字符串映射 strerror
求字符串长度 strlen
日期和时间函数
本类别给出时间和日期处理函数
头文件 time.h
函数列表
函数类别 函数用途 详细说明
时间操作函数 得到处理器时间 clock
得到时间差 difftime
设置时间 mktime
得到时间 time
时间转换函数 得到以ASCII码表示的时间 asctime
得到字符串表示的时间 ctime
得到指定格式的时间 strftime
函数库未来的发展方向
本部分用于说明各类别函数库在将来如何发展。
序号 库类别 头文件 详细说明
1 错误处理 errno.h
2 字符处理 ctype.h
3 地区化 local.h
4 数学函数 math.h
5 信号处理 signal.h
6 输入输出 stdio.h
7 实用工具程序 stdlib.h
8 字符串处理 string.h
34
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
如果你安装的Visual Studio,以及它的Visual C++的话,
那么在安装目录下的VC/crt/src下有所有标准C库的源代码
另外,h后缀的头文件包含函数的声明,具体的实现都在c后缀的源码文件中
C语言中strcmp函数是string库的常用函数。其原型代码和介绍如下:
1.先说一下这个函数的实现原理,向strcmp()函数中传入两个字符串(记为str1,str2).传入之后,通过把str1的各字母的ASCII码值和str2的各字母的ASCII码值进行比较。若str1str2则返回正数,若str1=str2则返回0,否则,则返回负数。
2.下面实现代码:
3.整个函数的原型中得益于“(*str1!='\0')(*str1==*str2)”这一句的代码,因为这样当字符指针指向空,意味着字符串已经移动到最后了,比较结束,此时可以退出循环。而如果两个字符串不相等时,则此时函数也可以退出了。
扩展资料:
这个函数要注意一下几点:
①使用*(unsigned char*)str1而不是用*str1。这是因为传入的参数为有符号数,有符号字符值的范围是-128~127,无符号字符值的范围是0~255,而字符串的ASCII没有负值,若不转化为无符号数这回在减法实现时出现错误。
②While循环中ret=*(unsigned char*)str1-*(unsigned char*)str2) *str1,最后与上str1也可以换成str2,因为前面已经做了相减,无论哪个先为‘\0’都会退出。因为最后与上str1是为了判断str1是否结束,即是否为‘\0’。
③这个函数没有判断参数为NULL时的情况,所以当传入NULL时程序会崩溃。网上看别人说商业化代码都会在调用strcmp前先判断是否为NULL,所以可以不用判断NULL;我在VC6上测试string.h中的strcmp(NULL,NULL),程序也会崩溃。这里可以根据实际情况来决定。
参考资料来源:百度百科-strcmp函数
这个问题问的太。。。。了,给你找了个操作符(operator)用于操作数据。操作符进行计算、检查等式、进行赋值、操作变量和进行其它更奇怪的工作。C++中有许多操作符,这里不想列出全部,只列出最常用的操作符,如下表所示。表1.2常用C++操作符操作符说明举例
算术运算符
+ 加 x=y+z;
- 减 x=y-z;
* 乘 x=y*z;
/ 除 x=y/z;
赋值运算符
= 赋值 x=10;
+= 赋值与和 x+=10;(等于x=x+10;)
-= 赋值与减 x-=10;
*= 赋值与乘 x*=10;
\= 赋值与除 x\=10;
= 赋值位与 x=0x02;
|= 赋值位或 x|=0x02;
逻辑操作符
逻辑与 if(x 0xFF) {...}
|| 逻辑或 if(x || 0xFF) {...}
等式操作符
== 等于 if(x == 10) {...}
!= 不等于 if(x != 10) {...}
小于 if(x 10) {...}
大于 if(x 10) {...}
= 小于或等于 if(x = 10) {...}
= 大于或等于 if(x = 10) {...}
一元操作符
* 间接操作符 int x=*y;
地址操作符 int* x=y;
~ 位非 x =~0x02;
! 逻辑非 if(!valid) {...}
++ 递增操作符 x++(等于x=x+1;)
-- 递减操作符 x--;
类和结构操作符
:: 范围解析 MyClass :: SomeFunction();
- 间接成员 MyClass- SomeFunction();
· 直接成员 MyClass . SomeFunction();
可以看出,这个清单长了些,没法一下子记住。使用C++时,你会慢慢熟悉这些操作符的。必须指出,递增操作符既可用作前递增(++x),也可用作后递增(x++)。前递增操作符告诉编译器先递增再使用变量,而后递增操作符则让编译器先使用变量值再递增。例如下列代码:
int x = 10;
cout "x = " x++ end1;
cout "x = " x end1;
cout "x = " x end1;
cout "x = " ++x end1;
输出结果如下:
x=10
x=11
x=12
x=12
递减操作符也是这样,这里不想将这些内容讲得太深,但读者可以耐心阅读下去,正如彭兹对奥古斯特所说,“奥古,耐心点,罗马不是一天建成的”。说明 在C++中操作符可以过载(overload)。编程人员可以通过过载标准操作符让它在特定类中进行特定运行。例如,可以在一个类中过载递增操作符,让它将变量递增10而不是递增1。操作符过载是个高级C++技术,本书不准备详细介绍。你也许会发现,有些操作符使用了相同的符号。符号的意义随情境的不同而不同。例如,星号(*)可以作为乘号、声明指针或取消指针引用。这初看起来有点乱,事实上,C++编程老手有时也觉得有点乱。多实践,你会慢慢适应的。本书有许多例子介绍这些操作符。读者不必死记每个操作符的作用,而可以在学习中通过程序和码段去理解其作用。 C++中的函数
函数是与主程序分开的码段。这些码段在程序中需要进行特定动作时调用(执行)。例如,函数可能取两个值并对其进行复杂的数学运算。然后返回结果,函数可能取一个字串进行分析,然后返回分析字串的一部分。新术语 函数(function)是与主程序分开的码段,进行预定的一个服务。函数是各种编程语言的重要部分,C++也不例外。最简单的函数不带参数,返回void(表示不返回任何东西),其它函数可能带一个或几个参数并可能返回一个值。函数名规则与变量名相同。图1.5显示了函数的构成部分。新术语 参数(parameter)是传递给函数的值,用于改变操作或指示操作程度。
返回类型 函数名 参数表
↓ ↓ ↓
int SomeFunction(int x, int y){
函数体→int z = (x * y); return z; ↑返回语句
}
图1.5函数的构成部分使用函数前,要先进行声明。函数声明或原型(prototype)告诉编译器函数所取的参数个数、每个参数的数据类型和函数返回值的数据类型。清单1.4列示了这个概念。新术语 原型(prototype)是函数外观的声明或其定义的说明。
清单1.4Muttiply.cpp
1: #include iostream.h
2: #include conio.h
3: #pragma hdrstop
4:
5: int multiply(int,int)
6: void showResult(int);
7:
8:int main(int argc,char **argv);
9:{
10: int x,y,result;
11: cout end1 "Enter the first value:";
12: cin x;
13: cout "Enter the second value: ";
14: cin y;
15: result=multiply(x,y);
16: showResult(result);
17: cout end1 end1 "Press any key to continue...";
18: getch();
19: return 0
20: }
21:
22: int multiply(int x,int y)
23: {
24:return x * y;
25: }
26:
27: void showResult(int res)
28: {
29:cout "The result is: " res end1;
30: }
这个程序的11到14行用标准输入流cin向用户取两个数字,第15行调用multiply()函数将两个数相乘,第16行调用showResult()函数显示相乘的结果。注意主程序前面第5和第6行multiply()和showResult()函数的原型声明。原型中只列出了返回类型、函数名和函数参数的数据类型。这是函数声明的最基本要求。函数原型中还可以包含用于建档函数功能的变量名。例如,multiply()函数的函数声明可以写成如下:int multiply(int firstNumber,int secondNumber);这里函数multiply()的作用很明显,但代码既可通过说明也可通过代码本身建档。注意清单1.4中函数multiply()的定义(22到25行)在主函数定义码段(8到20行)之外。函数定义中包含实际的函数体。这里的函数体是最基本的,因为函数只是将函数的两个参数相乘并返回结果。清单1.4中函数multiply()可以用多种方法调用,可以传递变量、直接数或其它函数调用的结果:
result = multiply(2,5);//passing literal values
result = multiply(x,y); //passing variables
showResult(multiply(x,y));
//return value used as a
//parameter for another function
multiply(x,y);//return value ignored
注意 最后一例中没有使用返回值。本例中调用函数multiply()而不用返回值没什么道理,但C++编程中经常忽略返回值。有许多函数是先进行特定动作再返回一个数值,表示函数调用的状态。有时返回值与程序无关,可以忽略不计。如果将返回值忽略,则只是放弃这个值,而不会有别的危害。例如,前面的样本程序中忽略了getch()函数的返回值(返回所按键的ASCII值)。函数可以调用其它函数,甚至可以调用自己,这种调用称为递归(recursion)。这在C++编程中是个较复杂的问题,这里先不介绍。新术语 递归(recursion)就是函数调用自己的过程。
你说的就是库函数的源码,也就是glibc,源码在可以下到,比如下载,打开后就可以看到你需要的各种库的具体实现代码,比如在string中的strcat.c中就有
char *strcat (dest, src)
char *dest;
const char *src;
{
char *s1 = dest;
const char *s2 = src;
reg_char c;
/* Find the end of the string. */
do
c = *s1++;
while (c != '\0');
/* Make S1 point before the next character, so we can increment
it while memory is read (wins on pipelined cpus). */
s1 -= 2;
do
{
c = *s2++;
*++s1 = c;
}
while (c != '\0');
return dest;
}