(6). strncat()函数:追加字符串的num个字符到另一字符串
函数返回值类型和相关参数:
char * strncat ( char * destination, const char * source, size_t num );
(和 strcat()函数 相同,只是参数多了个拷贝的字符个数)
注意事项:
(1).
将源字符串的副本的num个字符追加到目标字符串。
目的地中的 '\0' 被源字符串的第一个字符覆盖,
并且 '\0' 会在新字符串的末尾。
(和strcat()函数类似,但限制了追加个数)
(2).
如果源字符串的长度小于num,也只追加 源字符串 的字符串,
不会像strncpy一样补0。
(7). strncmp()函数:在num个字符内比较两个字符串
函数返回值类型和相关参数:
int strncmp ( const char * str1, const char * str2, size_t num );
(和 strcmp()函数 相同,只是参数多了个 限定在num个字符中比较)
注意事项:
(1).
比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完。
(8). strstr()函数:在字符串中找子字符串
函数返回值类型和相关参数:
char * strstr ( const char *str1, const char * str2);
(参数接收 两个常量字符串,返回 字符指针)
注意事项:
(1).
在 str1 中 找 str2 首次出现的地址,如果 str2 中没有 str1 则返回 空指针NULL。
(4).
学会strstr函数的模拟实现(下面第2个模块有)
(9). strtok()函数:使用自定义分隔符对字符串进行分割
函数返回值类型和相关参数:
char * strtok ( char * str, const char * sep );
(参数接收 被分割的字符串首字符地址 和 指定的分隔符指针,
返回 被分割的子字符串指针 )
注意事项:
(1).
sep参数是个字符串,定义了用作分隔符的字符集合
(2).
str参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。
(3).
strtok函数找到str中的下一个标记,并将其用 \0 结尾(把找到的标记变为 \0 ),
返回一个指向这个标记的指针。
(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容 并且可修改。)
(4).
strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。
(5).
strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
(6).
如果字符串中不存在更多的标记,则返回 NULL 指针。
(10). strerror()函数:将错误码以字符串形式提供出来
函数返回值类型和相关参数:
char * strerror ( int errnum );
(参数接收 错误码,返回 错误码的字符串信息地址)
注意事项:
(1).
库函数在执行时,发生了错误,会将一个错误码存放在 errno 这个变量中,
errno 是C语言提供的一个全局变量。
2 . 库函数的模拟实现
(1). 模拟实现strlen()函数:
方法1:计数器方式
对应代码:
#include <stdio.h> //方法1:计数器方式 size_t my_strlen(const char* str) //和库函数的strlen函数一样 //返回值为无符号整型,参数为常量字符指针 { int count = 0; //计数器 while (*str != '\0') //还没到结束符就继续统计 { count++;//没到结束符就统计+1 str++;//判断下一位 } return count;//返回计数器 } int main() { size_t sz = my_strlen("abc"); //使用模拟实现的strlen函数返回一个size_t(无符号整数)的数 //进行打印: printf("%u\n", sz); //%u:打印无符号的数 return 0; }
方法2:指针方式
对应代码:
#include <stdio.h> //方法2:指针方式 size_t my_strlen(const char* str) //和库函数的strlen函数一样 //返回值为无符号整型,参数为常量字符指针 { char* p = str; while (*p != '\0') //还没到结束符就继续统计 { p++;//没指向结束符就判断下一位 } return p-str;//用移动后的指针 - 原来的指针 == 字符串长度 } int main() { size_t sz = my_strlen("abc"); //使用模拟实现的strlen函数返回一个size_t(无符号整数)的数 //进行打印: printf("%u\n", sz); //%u:打印无符号的数 return 0; }