玖(常用库函数)

最后更新于:2022-04-01 20:30:18

玖 ***字符串处理的库函数*** **字符处理函数:** int isdigit(int ch)   ;//是否为数字,即ch是否是0-9中的字符 int isxdigit(int ch)   ;//是否为十六进制数字,即ch是否是0-9  a-z A-Z 中的字符 int isalpha(int ch)  ;//是否为字母 int isalnum(int ch)  ;//是否为字母或数字 int islower(int ch)  ;//是否为小写字母 int isupper(int ch)  ;//是否为大写字母 int tolower(int ch)  ;//转换为小写字母 int toupper(int ch)  ;//转换为大写字母 **字符串转换函数:** 1,字符转换为数字: (最好是符合要求的纯数字字符串,若数字与字母混搭,则待数字必须在前面) double atof(char  *str) ; //将字符串str转换为double型数字 int    atoi (char  *str) ; //将字符串str转换为int 型数字 long   atol(char  *str) ; //将字符串str转换为long int 型数字 2,数字转换为字符: char * itoa (int digit, char *destStr, intradix) ; //将int型数字digit按radix进制转换成字符串destStr char * ltoa (long digit, char *destStr, intradix) ; //同理将long型数字转换成字符串 char * ultoa (long digit, char *destStr,int radix) ; //同理将unsignedlong型数字转换成字符串 【以上库函数可以用于进制的转换】 类似函数还有: double strtod(char *, char **) ; long strtol(char *, char **, int) ; unsigned long strtoul(char *, char **, int) ;  **★字符串操作函数:** char * strcpy (char *s1, char *s2) ; //将字符串s2复制到数组s1中。 char * strncpy(char *s1,char *s2) ; //将字符串s2的最多n个字符复制到数组s1中 char * strcat (char *s1, char * s2) ; //将字符串s2连接在字符串s1尾部 char * strncat(char *s1, char *s2, size_tn) ; //将字符串s2中最多n个字符连接在s1之后 【注意:以上操作都要求目标字符数组有足够的存储空间】 **字符串比较函数:** int strcmp(char *s1, char *s2 )  ;//比较字符串s1,s2.如果s1等于小于或大于s2,分别返回0,负值,正值 int stricmp(char *s1, char *s2)  ;//不区分大小写地比较两字符串 int strncmp(char *s1, char *s2, size_t n)  ;//比较两字符串的至多n个字符 **字符串查找函数:** char *strchr(char *str, int ch) ;//在字符串str中查找字符ch第一次出现的位置,如果找到了,就返回str中ch的指针,否则返回NULL char *strrchr(char *str, int ch) ;//查找字符串str中字符ch的最后一次出现的位置(即:从后往前查找) char *strstr(char *str1, char *str2) ;//查找字符串str1中第一次出现字符串str2的位置 char *strpbrk(char *str2, char *str2) ;//查找字符串str2中任意字符在字符串str1中首次出现的位置。 **其它函数:** char *strrev(char * ) ; //字符串逆序函数 size_t strlen(char * str) ;//测字符串str的长度 **注意:** strncpy( ) , strncat( ) , strncmp( ) ,这些函数只能对两个不同的字符串操作,不能对同一字符串的不同部分操作,如果需要这么做,可以使用内存函数。 若把目标字符串初始置空,strncat()可以完成很多功能的操作。可以替代strncpy( )的功能, 还可以提取子串 等。 ***内存函数*** 【内存函数直接对内存操作,不仅可以处理字符串,还可以处理任何类型的数组、结构等。】 在标准C中,这些函数被认为是字符串函数的一部分,是在头文件string.h中声明的。 void * memcpy(void *dest, const void *src, size_t n)  ; 从src地址处复制n个字节到dest , 并返回地址dest的值 void * memmove(void *dest, const void *src, size_t n)  ; 其功能与上个函数相同,区别在于:memmove函数在源内存区域和目标内存区域重叠的情况下也能正确执行操作。 void * memchr(const void *ptr, int val, size_t len) ; 在地址ptr后的前len个字符中搜索val值的第一次出现。如果找到val,它返回一个指向包含val值的第一个字符的指针,否则返回一个null字符。 (每个字符根据表达式(unsigned char)c == (unsigned char)val 比较) void * memset(void * ptr, int val, size_tlen) ; 把val复制到从ptr开始的len个字符中,ptr所指定的字符被认为是unsignedchar 类型 int memcmp(const void * ptr1, const void * ptr2, size_t len) ; 把ptr1的前len个字符与ptr2的前len个字符进行比较。如果第一个字符串按字典顺序小于第二字字符串,memcmp就返回一个负值。 **【后记】我的C书单列表** 《全国计算机等级考试二级C语言》 《C语言大学教程》 《C和指针》 《C语言深度剖析》 《你必须知道的495个C语言问题》 《C专家编程》 《C陷阱与缺陷》(如果上面的书你仔细研读过的话,那么这本书没什么意义,不推荐) 《高质量C/C++编程指南》 《C语言参考手册》(当做字典用,初学者不推荐) 《C标准库》(不推荐)
';