您的位置:首页 > 其它

字符串函数(strlen、strcmp、strcat、strncat、strncpy、strncmp、strchr、strrchr、strpbark、strstr、strspn、strcspn等)

2018-02-27 22:36 579 查看
有的字符串函数相比大家都很熟悉,这里将strlen,strcat等字符串函数的注意点说明一下。
首先,先看一下strlen函数:



但是请看下列这种情况:



为什么是较长的是“good day”呢?
因为strlen函数的返回值是无符号整数,无符号数相减也是无符号数,即被减数若小于减数结果仍大于0。
strcat函数:
strcat函数用于字符串的拼接。





但是strcat可不可以自己给自己拼接呢?



是不可以的,strcat拼接时,会将源字符串的‘\0’拷贝到目标字符串,但是自己给自己拼接,永远不会到'\0',也就没有形成字符串,所以strcat不能自己给自己拼接。
strcmp函数:




strcmp比较的是字符的ASCII(比较到出现不一样的字符或者一个字符串结束)
标准规定:当第一个字符串大于第二个字符串,返回的是大于0的数字;
当第一个字符串小于第二个字符串,返回的是小于0的数字;
当第一个字符串等于第二个字符串,返回0.



strncpy函数:




拷贝 num个字符从源字符到目标字符;
如果源字符串的长度小于num,则拷贝完源字符串后,在目标的后边追加0,直至到num;
值得注意的是strncpy没有拷‘\0'。



strncat函数:




拼接count个字符从源字符串到目标字符串;
strcat函数拷贝了'\0'。



strncmp函数:




比较到出现不一样字符或者一个字符串比较结束或者count个字符全部比较结束



其中char [ ][5]是指:



strchr函数:



strchr是指int c 字符第一次在string中出现的所处位置。



这个题是找到字符s在str字符串中出现的位置。
strrchr函数:



strrchr是指字符c最后一次出现在string所处位置。如果模拟strrchr函数,可从字符串后边字符c第一次出现的位置。
注:strchr函数和strrchr函数功能相反。



strpbrk函数:




strpbrk是指返回第一个字符串中第一个出现在第二个字符串中字符的地址。(返回第一个字符串的地址)



strstr函数:




返回第二个字符串中第一次在第一个字符串中出现的位置。(返回的是第一个字符串地址)



注意:在本题中不可将char str[ ]改为char *,因为char *变量字符串指字符串在字符常量区,不可修改,而strncpy语句修改了字符串,将会导致程序崩溃。
strspn函数:




返回的是str1字符串中开始部分匹配str2字符串中字符的个数。(str2中任意一个字符在str1开始部分出现就统计,str2中任意一个字符不在str1开始部分出现,就退出。)



str1中‘1’‘2’‘6’‘t’在str2字符串中出现,'h'没有出现在str2,退出,不在统计。
strcspn函数:
返回str1字符串开始部分出现的不在str2字符串中字符的个数。(如果str1开始部分字符在str2中出现,则退出)



str1中‘f ’ 'a'    'b'     'c'没有在str2中出现直至到‘5’停止累计,退出。
注:strspn和strcspn功能相反。
strtok函数:




即char *strtok(char *str,const char *sep)
注:sep参数字符串,定义了用作分隔符(逗号,句号,空格等)的字符集合;
第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或多个分隔符分割的标记;
strtok函数找到有效的分割符(有效分隔符是指分隔符前有字符串,如果没有,继续查找分隔符),将其设置为'\0',并将分隔符前的字符串返回;
对str1字符串进行分割,第一次将第一个参数设置为str1,以后将第一个参数设置为NULL,这时将在被保存位置开始,查找下一个分隔符;
如果字符串中不存在分隔符,则返回NULL指针。



注意:strtok的第一个参数为char *,而不是const char *,所以char *str="- This,a sample string."错误,同理字符常量区不可修改。
strerror函数:




为什么会存在strerror函数?
一个函数执行既有成功,也有失败,也有执行到中途因为某种原因导致程序崩溃。c语言提供全局变量,当调库函数出现错误时,errno会被设置为对应的错误码。计算机识别数字,而程序员识别字符,所以需要strerror函数将错误码转为字符串,方便程序员识别。
本函数在Linux平台解释。
首先了解下有多少错误码:



结果为:



还有错误码,没有截完整。
下来,验证下,错误码对应的字符串:



结果为:



注:没有文件mymain.c,从上图可看出错误码对应No such file or directory。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字符串函数
相关文章推荐