linux系统编程——字符串操作函数

带删除线的表示不建议使用。

       #include <strings.h>


       int strcasecmp(const char *s1, const char *s2);
比较字符串,忽略字符大小写。

       int strncasecmp(const char *s1, const char *s2, size_t n);
比较字符串,不忽略字符大小写。

        char *index(const char *s, int c); 
建议使用strchr

        char *rindex(const char *s, int c);
建议使用strrchr

       #include <string.h>

       size_t strlen(const char *s);


       char *strcat(char *dest, const char *src);

将字符串src追加到dest结尾。如果dest或src为NULL,则段错误。

如果目的缓冲区dest大小小于strlen(dest)+strlen(src)+1,就会越界。


       char *strncat(char *dest, const char *src, size_t n);

与strcat相似,除了,最多从src中拷贝n个字符,而且当src包含n个或n个以上字符时,不必以'\0'结尾。

如果n大于strlen(src)+1,则只会拷贝strlen(src)+1个字符,不会因为n大于strlen(src)+1而发生越界。

如果strlen(src)大于等于n,strncat()会写n+1个字符到dest的结尾,即dest的空间大小必须大于等于strlen(dest)+n+1,否则会发生越界。

如果strlen(src)小于n,strncat()会写strlen(src)+1个字符到dest的结尾,即dest的空间大小必须大于等于strlen(dest)+strlen(src)+1,否则会发生越界。


       char *strchr(const char *s, int c);

返回指针,指向字符c第一次出现的地方。

       char *strrchr(const char *s, int c);

返回指针,指向字符c最后一次出现的地方。


       char *strstr(const char *haystack, const char *needle);

在字符串haystack中查找子串needle。


       int strcmp(const char *s1, const char *s2);

字符串比较,s1>s2,返回正整数;s1=s2,返回0;s1<s2,返回负整数。

如果s1长度大于s2,且s1前面的部分和s2完全相同,则s1>s2,返回正整数。


       int strncmp(const char *s1, const char *s2, size_t n);

至多比较前n个字符。


       char *strcpy(char *dest, const char *src);

如果dest大小小于strlen(src)+1,就会发生越界。


       char *strncpy(char *dest, const char *src, size_t n);

至多拷贝n个字符;

如果strlen(src)大于等于n,则拷贝n个有效字符,并不会再加'\0'。

如果src长度小于n,则把剩余的字节填充'\0',因此效率低下。

如果dest大小小于n,就会发生越界。


        char *strdup(const char *s);
复制字符串, 内部会调用malloc,所以返回的字符串需要调用free释放。

       int strcoll(const char *s1, const char *s2);
根据LC_COLLATE进行字符串比较,如果是LC_COLLATE是“POSIX”或"C",strcoll和strcmp等价。


       size_t strspn(const char *s, const char *accept);
返回字符串s开头连续包含字符串accept内的字符数目。


       size_t strcspn(const char *s, const char *reject);
返回字符串s起始部分不在reject中的字符的个数。

      char *strpbrk(const char *s, const char *accept);
在s中查找第一次出现的包含在accept中的字符,找不到返回NULL。


       char *strtok(char *s, const char *delim);
从字符串s中导出标记。字符串s会被修改。

非线程安全;strtok_r()为可重入的版本。


       char *strsep(char **stringp, const char *delim);
与strtok()功能相同,兼容性不如strtok()好。


       char *strfry(char *string);

使原来的字符串乱序。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值