【C标准头文件】<string.h>

strlen 字符串长度

void test_strlen() {
    const char *str = "abcdef";
    int length = strlen(str);
    //输出length = 6
    LOGD("length = %d", length);
}

strcpy 字符串拷贝

  • strcpy
char dst[100] = "abcdef";
const char *src= "ghi\0jkl";

//将 参数2 拷贝到 参数1 中
//参数1为 目标字符串数组
//参数2为 源字符串
strcpy(dst, src);
//输出结果为:ghi,因为遇到 \0 就结束
LOGD("strcpy dst= %s", dst);
  • strncpy
char dst[100] = "abcdef";
const char* src = "ghijkl";

//从 src 中拷贝 n 个字符到 dst 中
//参数1为 目标字符串数组
//参数2为 源字符串
//参数3为 需要拷贝的字符串个数
strncpy(dst, src, 3);
//输出结果为:ghidef
LOGD("strcpy dst = %s", dst);

memcpy 内存拷贝

  • strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
  • strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,如果空间不够,就会引起内存溢出。memcpy则是根据其第3个参数决定复制的长度。
char dst[100] = "abcdef";
const char* src = "ghijkl";

//从 src 中拷贝 n 个字符到 dst 中
//参数1为 目标地址
//参数2为 源地址
//参数3为 需要拷贝的字节个数
memcpy(dst, src, 3);
//输出结果为:ghidef
LOGD("strcpy dst = %s", dst);

strcmp 字符串比较

从两个字符串的第一个字符开始比较,如果这两个字符相等,那么这两个字符串都会进行下一对字符比较,直到两个字符不相等,然后进行比较大小。如果第一个字符小于第二个字符,就会返回一个小于 0 的整数,等于则返回 0 ,大于则返回一个大于 0 的整数。

  • strcmp
const char *str1 = "abbbcd";
const char *str2 = "abbbdd";
int result = strcmp(str1, str2);

//输出0,表示 str1前三个字符 = str2前三个字符
LOGD("st1 cmp str2 = %d", result);
  • strncmp
const char *str1 = "abbbcd";
const char *str2 = "abbbdd";
//参数3为比较多少个字符
int result = strcmp(str1, str2,3);

//输出-1,表示 str1 < str2
LOGD("st1 cmp str2 = %d", result);

memcmp 内存比较

  • memcmp是比较内存区域buf1和buf2的前count个字节,该函数是按字节比较的。
  • memcmp不会在\0处停下来,而 strcmp 会在 \0停止
const char *str1 = "abb\0bdd";
const char *str2 = "abb\0bcd";

//参数3为比较的字节数
int result = memcmp(str1, str2,8);

//返回值大于0,表示 str1 大于 str2
LOGD("str1 & str2 = %d", result);

strcat 字符串追加

  • strcat
char dst[100] = "abcdef";
const char *src= "ghijkl";
strcat(dst, src);

//输出为:abcdefghijkl
LOGD("dst = %s", dst);
  • strncat
char dst[100] = "abcdef";
const char *src= "ghijkl";

//参数3为拼接3个字符
strncat(dst, src, 3);

//str3 = abcdefghi
LOGD("dst = %s", dst);

字符/字符串查找

strcspn

搜寻的是字符,检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符

char *str1 = "abcdef";
char *str2 = "dc";
int result = strcspn(str1, str2);

//result = 2
LOGD("reslut = %d", result);
strspn

搜寻的是字符,检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标

char *str1 = "abcdef";
char *str2 = "dc";
int result = strspn(str1, str2);

//result = 0
LOGD("result = %d", result);
strpbrk

搜寻的是字符,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回剩余字符串

char *str1 = "abcdef";
char *str2 = "dc";
char *result = strpbrk(str1, str2);

//result = cdef
LOGD("strpbrk = %s", result);
strstr

搜寻的是字符串,在字符串 str1 中查找第一次出现字符串 str2(不包含空结束字符)的位置开始的字符串。

char *str1 = "abcdef";
char *str2 = "dc";
char *result1 = strstr(str1, str2);
//result = (null)
LOGD("result1 = %s", result1 );

char *str3 = "cd";
char *result2 = strstr(str1, str3);
//result2 = cdef
LOGD("result2 = %s", result2);

strtok 字符串分割

char str1[100] = "www.baidu.com";
const char str2[2] = ".";

//参数1:源字符串
//参数2:分割字符串
char *result = strtok(str1, str2);
LOGD("strtok result = %s", result);
while (result != NULL) {
    result = strtok(NULL, str2);
    LOGD("result = %s", result);
}

strerror 错误码解析

在 C 语言中,程序发生错误的时候,是有一个隐藏的全局变量 errno 的(该变量在errno.h),这个变量是一个整数的,譬如 0 ,1,2,3,…等都代表不同的错误信息,而 strerror 的作用就是翻译这个错误码。

//Success
errno = 0;
char *error = strerror(errno);
LOGD("test_strerror = %s", error);

//Operation not permitted
errno = 1;
char *error1 = strerror(errno);
LOGD("test_strerror = %s", error1);

//No such file or directory
errno = 2;
char *error2 = strerror(errno);
LOGD("test_strerror = %s", error2);

//No such process
errno = 3;
char *error3 = strerror(errno);
LOGD("test_strerror = %s", error3);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值