C语言学习记录
-
strdup函数
定义于头文件<string.h>
原型:char* strdup(char* string)
参数 string:想要申请空间的字串
返回值:返回申请空间的首地址作用:根据string的长度来malloc一段空间,再将string的内容拷贝到这段空间内,最后在返回这段空间的首地址。
分析:看起来非常方便就简化了malloc和copy的过程,但值得注意的是并没有省略malloc的动作,还是在堆区申请了一块空间,在最后结束的时候仍要释放空间。如此一来很容易忽视释放空间的步骤造成内存泄漏。还是建议用宏函数来定义
-
strcsnp函数
定义于头文件<string.h>
原型:size_t strcspn( const char *dest, const char *src );
参数:
dest:要搜索的字串/要搜索的内容
src:在这个目标子串中搜索
返回值:dest字串在src中的最位置作用:指dest字符或字串在src中的位置
示例:
#include <string.h>
#include <stdio.h>
int main(void)
{
const char *string = "abcde312$#@";
const char *invalid = "*$#";
size_t valid_len = strcspn(string, invalid);
if(valid_len != strlen(string))
printf("'%s' contains invalid chars starting at position %zu\n",
string, valid_len);
}
输出
'abcde312$#@' contains invalid chars starting at position 8
无关笔记:cJson中的CJSON_GetArrayItem(cJSON*)函数的返回值是表达了该数组有多少个成员