.|strdup的作用是什么?有什么注意事项?
    .|作用:strdup用于将串拷贝到新建的内存处
    注意事项:不用的时候,需要调用free释放该段内存
    其实和malloc差不多,都是分配一段内存,不过区别是strdup另外还需要将字符串复制到新内存空间中
    strdup在此处的目的是该struct真正的用于该字符串,而不是其他地方也引用,防止被其他地方修改或者释放
    .+
    .|如何实现断言?assert
    .|
    struct Person person = malloc(sizeof(struct Person));
    assert(person!=null);
    .+
    .|c中如何获取字符串的长度?
    .|头文件:string.h
    用法:size_t strlen(const char
    str)
    注意:获取的是真实的字符串长度,不包括最后的结束符\0
    .+
    .|htonl函数作用是什么?
    .|host to netwok long 本地字节序(long类型)转为网络字节序
    这个关系到大端和小端,具体待续。
    .+
    .|htons函数作用是什么?
    .|host to network short,本地字节序(short类型)转为网络字节序
    .+
    .|函数作用:strcmp(str1,str2)
    .|比较两个字符串, 若str1=str2,则返回零;若str1str2,则返回正数
    .+
    .|函数作用:stricmp(str1,str2)(windows下)
    .|比较字符串,不区分大小写。功能和strcasecmp相同
    若str1=str2,则返回零;若str1str2,则返回正数
    .+
    .|函数作用:strcasecmp(str1,str2)(linux下)
    忽略大小写,比较字符串
    若str1=str2,则返回零;若str1str2,则返回正数
    .+
    .|函数作用:malloc
    .|在堆上分配一块内存空间,需要显式的释放
    SWITCH_GLOBAL_dirs.base_dir = (char ) malloc(strlen(local_argv[x]) + 1);
    .+
    .|函数作用:switch_snprintf
    .|用于将多个字符串按照指定格式进行拼接
    switch_snprintf(path, sizeof(path), “%s%s%s”, SWITCH_GLOBAL_dirs.run_dir, SWITCH_PATH_SEPARATOR, pfile);
    .+
    .|函数作用:atoi()
    .|函数用来将字符串转换成整数(int)
    .+
    .|函数作用:strdup
    .|复制一个新串,返回的指针指向该串
    .+
    .|函数作用: char
    strrchr(const char str, int c)
    .|查找一个字符串c在另一个字符串中末次出现的位置,并返回字符所在位置的指针,没找到的话,返回空指针;
    .+
    .|函数作用: char
    strchr(const char str, int c)
    .|查找一个字符串c在另一个字符串中第一次出现的位置,并返回字符所在位置的指针,没找到的话,返回空指针;
    .+
    .|函数作用:char
    strstr(const char haystack, const char needle)
    在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’,找到则返回位置指针,没有返回空指针
    .+
    .|函数作用:void memset(void s, int ch, size_t n);
    .|将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。