C语言字符串常用API

109 阅读7分钟

1 strlen():返回字符串的长度

使用案例:

char str[] = "Hello World";
int len = strlen(str);
printf("字符串长度为:%d\n", len);

注意事项:strlen()函数只能用于计算以’\0’结尾的字符串长度,不能计算非字符串类型的字符数组长度。

2 strcpy():将一个字符串复制到另一个字符串中

使用案例:

char str1[] = "Hello World";
char str2[20];
strcpy(str2, str1);
printf("复制后的字符串为:%s\n", str2);

注意事项:使用strcpy()函数时需注意目标字符串数组的大小,防止数组越界。

3 strcat():将一个字符串拼接到另一个字符串的末尾

使用案例:

char str1[] = "Hello";
char str2[] = "World";
strcat(str1, str2);
printf("拼接后的字符串为:%s\n", str1);

注意事项:使用strcat()函数时需注意目标字符串数组的大小,防止数组越界。

4 strcmp():比较两个字符串是否相等

使用案例:

char str1[] = "Hello";
char str2[] = "Hello";
int result = strcmp(str1, str2);
if(result == 0){
    printf("两个字符串相等\n");
}else{
    printf("两个字符串不相等\n");
}

注意事项:使用strcmp()函数比较字符串时,如果返回值为0,则表示两个字符串相等;如果返回值小于0,则表示str1小于str2;如果返回值大于0,则表示str1大于str2。

5 strstr():在一个字符串中查找另一个字符串

使用案例:

char str[] = "Hello World";
char substr[] = "World";
char *result = strstr(str, substr);
if(result != NULL){
    printf("在字符串中找到了子字符串:%s\n", result);
}else{
    printf("在字符串中未找到子字符串\n");
}

注意事项:使用strstr()函数查找子字符串时,如果找到了,则返回该子字符串在原字符串中的首地址;如果未找到,则返回NULL。

6 strtok():将一个字符串按照指定的分隔符分割成多个子字符串

使用案例:

char str[] = "Hello,World,This,is,C,Language";
char *token = strtok(str, ",");
while(token != NULL){
    printf("%s\n", token);
    token = strtok(NULL, ",");
}

注意事项:使用strtok()函数分割字符串时,第一次调用需传入原字符串,后续调用需传入NULL,分割符可自定义。

7 sprintf():将多个数据格式化成一个字符串

使用案例:

char str[50];
int num = 123;
float f = 3.14;
sprintf(str, "num=%d, f=%.2f", num, f);
printf("%s\n", str);

注意事项:使用sprintf()函数时需注意目标字符串数组的大小,防止数组越界。同时,格式化字符串中的占位符需与参数类型匹配,否则可能导致输出错误。

8 atoi():将字符串转换为整数

使用案例:

char str[] = "123";
int num = atoi(str);
printf("转换后的整数为:%d\n", num);

注意事项:使用atoi()函数将字符串转换为整数时,如果字符串中包含非数字字符,则会返回0。同时,如果字符串中的数字超出了int类型的范围,则可能会导致转换错误。

9 atof():将字符串转换为浮点数

使用案例:

char str[] = "3.14";
float f = atof(str);
printf("转换后的浮点数为:%.2f\n", f);

注意事项:使用atof()函数将字符串转换为浮点数时,如果字符串中包含非数字字符,则会返回0。同时,如果字符串中的数字超出了float类型的范围,则可能会导致转换错误。

10 isdigit():判断一个字符是否为数字字符

使用案例:

char c = '1';
if(isdigit(c)){
    printf("该字符是一个数字字符\n");
}else{
    printf("该字符不是一个数字字符\n");
}

注意事项:使用isdigit()函数判断字符是否为数字字符时,如果是,则返回非0值;否则返回0。

11 toupper():将一个字符转换为大写字符

使用案例:

char c = 'a';
c = toupper(c);
printf("转换后的字符为:%c\n", c);

注意事项:使用toupper()函数将字符转换为大写字符时,只有当该字符为小写字母时才会进行转换,否则返回原字符。

12 tolower():将一个字符转换为小写字符

使用案例:

char c = 'A';
c = tolower(c);
printf("转换后的字符为:%c\n", c);

注意事项:使用tolower()函数将字符转换为小写字符时,只有当该字符为大写字母时才会进行转换,否则返回原字符。

13 memcpy():将一个内存区域的数据复制到另一个内存区域

使用案例:

char src[] = "Hello World";
char dest[20];
memcpy(dest, src, strlen(src)+1);
printf("复制后的字符串为:%s\n", dest);

注意事项:使用memcpy()函数复制内存区域时,需注意目标内存区域的大小,防止数组越界。

14 memset():将一个内存区域的数据全部设置为指定的值

使用案例:

char str[] = "Hello World";
memset(str, '*', 5);
printf("设置后的字符串为:%s\n", str);

注意事项:使用memset()函数设置内存区域时,需注意目标内存区域的大小,防止数组越界。

15 strchr():在一个字符串中查找指定的字符

使用案例:

char str[] = "Hello World";
char c = 'o';
char *result = strchr(str, c);
if(result != NULL){
    printf("在字符串中找到了字符:%c\n", c);
}else{
    printf("在字符串中未找到字符:%c\n", c);
}

注意事项:使用strchr()函数查找字符时,如果找到了,则返回该字符在原字符串中的首地址;如果未找到,则返回NULL。

16 strrev():将一个字符串翻转

使用案例:

char str[] = "Hello World";
strrev(str);
printf("翻转后的字符串为:%s\n", str);

注意事项:使用strrev()函数将字符串翻转时,需注意目标字符串数组的大小,防止数组越界。

17 strcasecmp():比较两个字符串是否相等,忽略大小写

使用案例:

char str1[] = "Hello";
char str2[] = "hElLo";
int result = strcasecmp(str1, str2);
if(result == 0){
    printf("两个字符串相等\n");
}else{
    printf("两个字符串不相等\n");
}

注意事项:使用strcasecmp()函数比较字符串时,如果返回值为0,则表示两个字符串相等;如果返回值小于0,则表示str1小于str2;如果返回值大于0,则表示str1大于str2。比较时忽略大小写。

18 strncat():将一个字符串的前n个字符拼接到另一个字符串的末尾

使用案例:

char str1[] = "Hello";
char str2[] = "World";
strncat(str1, str2, 3);
printf("拼接后的字符串为:%s\n", str1);

注意事项:使用strncat()函数将字符串拼接时,需注意目标字符串数组的大小,防止数组越界。同时,需指定拼接的字符个数n,否则可能会导致拼接错误。

19 strncmp():比较两个字符串的前n个字符是否相等

使用案例:

char str1[] = "Hello";
char str2[] = "Help";
int result = strncmp(str1, str2, 3);
if(result == 0){
    printf("两个字符串前3个字符相等\n");
}else{
    printf("两个字符串前3个字符不相等\n");
}

注意事项:使用strncmp()函数比较字符串时,如果返回值为0,则表示两个字符串前n个字符相等;如果返回值小于0,则表示str1前n个字符小于str2前n个字符;如果返回值大于0,则表示str1前n个字符大于str2前n个字符。

20 strpbrk():在一个字符串中查找指定的字符集合中的任意字符

使用案例:

char str[] = "Hello World";
char charset[] = "aeiou";
char *result = strpbrk(str, charset);
if(result != NULL){
    printf("在字符串中找到了字符集合中的字符:%c\n", *result);
}else{
    printf("在字符串中未找到字符集合中的字符\n");
}

注意事项:使用strpbrk()函数查找字符集合中的任意字符时,如果找到了,则返回该字符在原字符串中的首地址;如果未找到,则返回NULL。