1.字符函数
1.1字符分类函数
判断字符是什么类型的函数,如果满足判断条件,则返回一个大于0的整数,否则返回0;
例如islower函数(判断字符是否为'a'~'z'的小写字母)
字符函数汇总
iscntrl | 任何控制字符 |
isspace | 空白字符,包括空格' ',换页'\f',换行'\n',回车'\r',水平/垂直制表符'\t','\v',退格'\b'等。 |
isdigit | 十进制数组0~9 |
isxdigit | 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F |
islower | 小写字母及其assic码 |
isupper | 大写字母及其assic码 |
isalpha | 字母a~z,A~Z |
isalnum | 字母及其assic或者数字,a~z,A~Z,0~9(12就不行) |
ispunct | 标点符号,不属于数字或字母的图形字符(可打印) |
isgraph | 图形字符 |
isprint | 可打印字符,包括推行字符和空白字符 |
将字符串中的小写字母转换为大写字母
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<string.h>
void kangwerte(char* a)
{
assert(a);
while (*a)
{
if (islower(*a) > 0) //判断*a是否为小写字母
{
*a -= 32;
}
a++;
}
}
int main()
{
char m[] = "abCdEF";
kangwerte(m);
printf("%s\n", m); //ABCDEF
return 0;
}
1.2字符转换函数
tolower | 将大写字母转换为小写字母,如果无法转换,则返回值为转换前的值 |
toupper | 将小写字母转换为大写字母,如果无法转换,则返回值为转换前的值 |
小写字母转换为大写字母只要将上面的*a-=32替换成*a=toupper(*a)
2.内存函数&&字符串函数
复制类 | |
void * memcpy ( void * destination, const void * source, size_t num ) | 复制内存块 从source复制n个字节到destination 无法重叠移动 |
void * memmove ( void * destination, const void * source, size_t num ) | 移动内存块 从source复制n个字节到destination 可以重叠移动 |
char * strcpy ( char * destination, const char * source ) | 复制source中的内容到destination中 |
char * strncpy ( char * destination, const char * source, size_t num ) | 复制num个source中的字符到destination中 |
追加类 | |
char * strcat ( char * destination, const char * source ) | 在destination后追加source字符串 |
char * strncat ( char * destination, const char * source, size_t num ) | 在destination后追加num个source中的字符串 |
比较类 | |
int memcmp ( const void * ptr1, const void * ptr2, size_t num ) | 比较两块内存中的n个字节的字符串 |
int strcmp ( const char * str1, const char * str2 ) | 比较两个字符串大小 |
int strcoll ( const char * str1, const char * str2 ) | 比较两个字符串大小 strcoll与strcmp的区别:strcoll函数使用本地化的排序规则进行比较,可处理不同语言之间的字符排序问题 |
int strncmp ( const char * str1, const char * str2, size_t num ) | 比较两个字符串前n个字节的大小 |
size_t strxfrm ( char * destination, const char * source, size_t num ) | 复制字符串,与strcpy相同,但strxfrm函数使用本地化的排序规则进行比较,可处理不同语言之间的字符排序问题 |
搜索类 | |
const void * memchr ( const void * ptr, int value, size_t num ) ( void * ptr, int value, size_t num ) | 在ptr往后num个字节范围内找第一次出现value的地方,如果找到了,返回这个地方的地址,如果找不到,返回NULL |
const char * strchr ( const char * str, int character ) ( char * str, int character ) | 在str串中找第一次出现character的地方,如果找到了,返回这个地方的地址,如果找不到,返回NULL |
size_t strcspn ( const char * str1, const char * str2 ) | 在str1起始地址开始找str2中的字符,如果在某个地方找到了str2中的字符,那么就返回这个被找到字符的地址与str1起始地址相减的值,即字节数 |
const char * strpbrk ( const char * str1, const char * str2 ); ( char * str1, const char * str2 ) | 在str1起始地址开始找str2中的字符,如果在某个地方找到了str2中的字符,那么就返回这个被找到字符的地址 |
const char * strrchr ( const char * str, int character ) ( char * str, int character ) | 在str1起始地址开始找str2中的字符最后出现的为止,返回这个被找到字符的地址 |
size_t strspn ( const char * str1, const char * str2 ) | 在str1起始地址开始找str2中的字符,如果连续n个字符都包含str2中的字符,那么就返回n |
const char * strstr ( const char * str1, const char * str2 ) ( char * str1, const char * str2 ) | 在str1中找str2第一次出现的位置,返回第一次出现的地址 |
char * strtok ( char * str, const char * delimiters ) | 依次用delimiters字符串中的字符在str串中出现的这个字符的位置分割(用\0代替str中的这个字符)函数具有记忆功能,可以多次分割 |
其他类 | |
void * memset ( void * ptr, int value, size_t num )
| 内存设置 将ptr地址往后num个字节赋值为为value |
char * strerror ( int errnum ) | 错误信息,可以传整数,以%s来查看对应的错误信息 |
strlen | 求字符串长度 |