优势:使用库函数可以降低门槛,提高效率
重点:掌握用法以及函数内部实现
注意:参数合法性检查,利用assert或者if判断传入是否是空指针
拷贝进去的空间必须足够大,防止溢出
代码详见:https://gitee.com/how-fat-four-duck/start_c
字符函数
strlen:求字符串的长度
size_f strlen (const char* str)
strcpy:字符串的拷贝
char* strcpy(char* destination ,const char* souurce)
字符串的结尾需要以\0结束
strncpy:字符串的拷贝,但与strcpy不同的是限制了最多拷贝多少个字节
char * strncpy ( char * destination, const char * source, size_t num )
strcat:字符串的拼接(C中拼接必须使用此函数)
错误写法:
char* str1="hello";
char* str2="world";
strcat(str1,str2);
//strcat会尝试把str2对于的内容拷贝到str1的末尾。但是此时str1对应的是一个字符串常量。
//字符串常量是在一个特殊的内存区域上,这个内存空间是“只读的”,不能被修改
strcmp:字符串比较(比较两个字符串的大小)
规则:str1>str2,返回>0的整数;str1<str2返回<0的整数;想等则返回0;
strncmp:比较两个字符串的前n个字符,相当于比较两个字符串的前半部分
strstr:字符串的匹配
strstr的参数,分别是长的字符串和短的字符串,判定长的字符串是否包含短的字符串。返回值的类型是一个char*。
如果str1包含了str2,此时返回的char*就指向了str1中str2首次出现的位置。
如果str1不包含str2,就返回NULL
使用3个指针,sub和red对应的字符进行比较,如果不相等,就说明这个圈是不匹配的,于是从下一个圈又开始进行比较
strtok:字符串切分(应该避免此函数的使用)
char * strtok ( char * str, const char * delimiters
缺点:需要调用多次才能实现切分;调用多次的时候,参数传的不相同
内存函数
memcpy:(不能支持内存重叠)函数拷贝到目标函数里面,并设置拷贝多少个字节
void * memcpy ( void * destination, const void * source, size_t num )
memmove:(支持内存重叠)用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。
void * memmove ( void * destination, const void * source, size_t num )