大家在看这篇文章之前 ,看过我的字符函数和字符串函数1的那篇文章了吗。如果还没有看的话,希望大家在看了上一篇文章之后再来看这篇文章的效果肯定要好一些。好了废话不多说,现在开始我们今天的博客。
1.strncpy函数的使用
看过上一篇文章的朋友肯定还记得我在上一篇文章讲到了strcpy这个函数,今天我要讲的是strncpy这个函数,其实这个函数的作用和上一篇我提到的strcpy函数用法差不多,只不过,今天这个函数可以限定拷贝字符的个数。好了,接下来,我来来给大家看看这个函数的一般形式,大家请看下面的代码块。
cpp
char * strncpy (char * destination, const char * source, size_t num);
接下来我来给大家解释一下这个代码块中的各个组成部分。
1.返回值是一个指针,这个指针指向的是目标空间的首元素地址。
2.destination是指向的是目标空间,source指向的源头空间。
3.num是指拷贝到目标空间的字符个数,这个是最多的拷贝的字符个数。
讲完了上面的一般形式的解释,接下来,我来给大家展示一下这个函数的使用。大家请看下面的代码演示,请看下面的图片。

上面的代码展示的就是这个函数的使用方法,希望大家可以去试一试这个代码,感兴趣的朋友可以在自己的编译器上尝试尝试。接下来,我要讲一讲这个函数的一些注意事项。
1.对于这个歌函数来说,如果规定的字符个数超出了源头数据的个数的话,也是需要拷贝的,只不过是使用'\0'来补充。如果末尾存在'\0'就用'\0'来补充,如果没有的话,使用的就是随机值来补充,希望大家可以注意。
2.这个函数在使用的时候,源头数据中可以不存在'\0',所以这个函数的使用条件就要轻松一点,出错的概率也会小一些,所以建议大家使用这个函数。
2.strncat函数的使用
和上面的一样,在上一篇博客中,我讲到了strcat这个函数。其实今天讲的函数和strcat函数用法也差不多,只不过也是规定了追加的字符个数。大家请看下面的这个函数的一般形式的代码块。
cpp
char * strncat (char * destination, char * source ,size_t num);
还是像上面那样,我来给大家介绍一些函数组成部分的解释。
1.函数的返回类型是指针,指向的是目标空间的首元素地址
2.destination是目标空间的指针,source是源头数据的指针
3.num是规定的最多追加的字符个数
讲完上面的解释,解下来,我就来给大家展示一下这个函数的用法吧,请看下面的图片。

还是一样,这个函数也有一些注意事项需要大家注意。
1.当追加的数据个数超过了源头数据的个数时,此时就不会再用'\0'来补充了,但是再追加完之后,这个函数会主动在目标空间最后再加上一个'\0'。
2.这个函数在使用的时候,源头数据中可以不存在'\0',但是目标空间必须要存在'\0'。这样才可以知道从哪里开始追加。这个函数比strcat更灵活,所以也推荐使用这个函数。
3.strncmp函数的使用
类比上面的函数可知,这个函数也是一样的,是规定字符长度的比较,大家请看下面的代码块。
cpp
int strncmp (const char * str1,const char * str2,size_t num);
下面是这个函数的组成部分的解释。
1.返回值是int类型,返回的是一个整数。规定,第一个字符串大于第二个字符串就返回大于0的数;第一个字符串等于第二个字符串就返回0;第一个字符串小于第二个字符串就返回小于0的数。
2.str1和str2分别指向了两个比较的字符串
3.num指的是最多比较的字符个数
接下来,我来给大家展示一下,这个函数的使用,大家请看下面的代码图片。

接下来,还是给大家讲一讲这个函数的注意事项。
1.这个函数可以比较规定长度的数据,这样就更加灵活
2.因为这个函数更加灵活,也间接说明了这个函数也更安全,所以也是更建议大家使用这个函数。
4.strstr函数的使用
接下来,给大家讲的这个函数,是一个新的函数,这个函数是字符查找函数。说白了就是在一个字符串里面查找一个字符串,好了,为了让大家更好理解,大家请看下面的代码块。
cpp
char * strstr (const char * str1,const char * str2);
接下来,我来给大家介绍一下这些参数的含义,大家请看下面的解释。
1.str1 和str2都是指针,str1 指向的是被查找的字符串,str2指向的是要查找的字符串
2.这个函数的返回值是一个指针,这个指针指向的是要查找的字符串在被查找的字符串中第一次出现的位置。如果要查找的字符串在被查找的字符串中存在则返回第一次出现的地址。如果不存在,则返回的是NULL这个空指针。
讲完了上面的这个函数的参数,接下来,我就来给大家演示一下这个函数的使用。大家请看下面的代码图片。

感兴趣的朋友也可以自己下去在编译器上尝试尝试。
5.strtok函数的使用
接下来的这个函数也是一个新的函数,那就是字符串分割函数,这个函数会根据自定义的分隔符将一个完整的字符串分割成不同的部分。大家请看下面的代码块展示。
cpp
char * strtok (char * str,const char * delim);
参数:
str:表示的被分割的字符串,首次传入时就传入这个字符串,后续传入NULL指针,表示的是继续分割该字符串。
delim:包含所有的可能分隔符的字符串,每个字符均视为独立的分隔符,这个分隔符可以有一个,也可以存在多个。
返回值:成功时返回指向当前子字符串的指针
没有更多子字符串时就返回NULL指针
使用步骤:
首次调用:传入待分割字符串和分割符
后续调用:传入NULL和相同的分隔符,继续分割
结束条件:当返回NULL时表示结束完成分割
接下来,我就来给大家演示一下这个函数的使用,大家请看下面的代码图片。

上面展示的就是这个函数的使用,但是这里面还是有好多我想要大家注意的事项
1.strtok这个函数在执行的时候,会修改原字符串,所以在使用之前要先拷贝一份,这样才可以保证原字符串不被修改。因为这个函数在分割字符串时会直接加'\0'。
2.多个连续的分隔符会被是为单个分隔符,不会返回空字符串。
3.如果输入的str为NULL且没有前序调用,行为未定义。
6.strerror函数的使用
这个函数也是一个其实在C语言中用的很少的函数,这个函数可以将错误码转化为特定的对应的错误,大家请看下面的代码块中的这个函数的一般形式。
cpp
char * strerror(int errnum);
功能:
strerror可以通过参数部分的errnum表示错误码,得到对应的错误信息,并且返回这个错误信息的首元素地址。
这个函数只针对于标准库函数中函数发生错误的错误码的转换。
接下来,我就来给大家展示一下,1到10这些错误码所对应的错误类型,大家请看下面的代码图片。

上面的代码展示的就是1到10这些错误吗所对应的错误信息,感兴趣的朋友也可以自己尝试一下。
好了,今天的博客就分享到这里,希望对你的C语言学习有帮助,我们下篇博客再见!!!