上一篇我们介绍了array的延伸应用,利用字元阵列我们可以当作储存字串的工具。
今天我们来介绍一下字串(String)相关的应用--String函式库!
<string.h>是一个包含了许多字串应用的函式库,这个函式库可以让你复制一个字串的内容到另一个字串、合并字串、分割字串、计算字串长度、比较字串是否相等,这些都可以在<math.h>中找到对应函式来协助处理,可以省去很多不必要的麻烦。
(1) 计算str长度
函式 | 说明 |
---|---|
size_t strlen(const char *str) | 计算str字串长度(不包含「\0」) |
(2) 复制字串
函式 | 说明 |
---|---|
char *strcpy(char *dest, const char *src) | 复制src的字串内容到dest中 |
char *strncpy(char *dest, const char *src, size_t n) | 复制src的字串前n个字元内容到dest中 |
(3) 合并字串
函式 | 说明 |
---|---|
char *strcat(char *dest, const char *src) | 将src字串的内容合并到dest字串尾 |
char *strncat(char *dest, const char *src, size_t n) | 将src字串的前n个字元内容合并到dest字串尾 |
(4) 字串比较
函式 | 说明 |
---|---|
int strcmp(const char *str1, const char *str2) | 会回传一个整数值,若str1字串与str2字串完全相同时,会回传0;若两字串不相同时依照开头字元的ascii code,回传>0或<0之值。 |
int strncmp(const char *str1, const char *str2, size_t n) | 与strcmp类似,但只比较str1字串、str2字串的前n个字元 |
int strcmpi(char *str1, char *str2) | strcmp的延伸版,是不分大小写字母的比较 |
int strncmpi(char *str1, char *str2, size_t n) | strncmp的延伸版,是不分大小写字母的比较前n个字元 |
(5) 分割字串
函式 | 说明 |
---|---|
char *strtok(char *str, const char *delim) | 依照delim作为分割符,分割str字串 |
(6) 查找字元
函式 | 说明 |
---|---|
char *strchr(const char *str, char c) | 回传str字串中第一个出现的c字元地址 |
size_t strcspn(const char *str1, const char *str2) | 回传从头开始在str1字串中,完全未出现str2中字元的字串长度 |
(7) 字母大小写转换
函式 | 说明 |
---|---|
char *strupr(char *str) | 将str字串中的字母全部转换为大写 |
char *strlwr(char *str) | 将str字串中的字母全部转换为小写 |
(8) 字串设定
函式 | 说明 |
---|---|
char *strset(char *str, char c) | 将str字串的字元全部转换为c字元 |
char *strnset(char *str, char c, size_t n) | 将str字串的前n个字元全部转换为c字元 |
char *strrev(char *str) |
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[10] = "12345";
printf("strlen: %d\n", strlen(str1));
char str2[] = "apple!";
char str3[] = "bird!";
strncpy(str2, str3, 4);
printf("strncpy: %s\n", str2);
char str4[] = "apple!";
char str5[] = "bird!";
strncat(str4, str5, 4);
printf("strncat: %s\n", str4);
char str6[] = "aaa";
char str7[] = "AAA";
printf("strcmp: %d\n", strcmp(str6, str7));
printf("strcmpi: %d\n", strcmpi(str6, str7));
char str8[] = "apple bird cat";
char c[]=" ";
char *token;
token = strtok(str8, c);
printf("strtok: %s\n", token);
token = strtok(NULL, c);
printf("strtok: %s\n", token);
token = strtok(NULL, c);
printf("strtok: %s\n", token);
char str9[] = "Hello World!";
char c2 = 'W';
printf("strchr: %p\n", strchr(str9, c2));
printf("strchr index: %d\n", strchr(str9, c2)-str9);
char str10[] = "abcDef";
strupr(str10);
printf("strupr: %s\n", str10);
char str11[] = "12345";
char c3 = 'c';
strset(str11, c3);
printf("strset: %s\n", str11);
char str12[] = "Hello World!";
strrev(str12);
printf("strrev: %s\n", str12);
return 0;
}
<<: Leetcode: 226. Invert Binary Tree
>>: 【从零开始的 C 语言笔记】第十六篇-二维Array
当我们使用销售或是产品的模组,我们有时候会针对各种货币来做销售单,但这样会造成统计问题,所以Odoo...
把 Apple Music 歌曲下载下来,可以让你在没有网路的时候也能收听音乐。想要下载 Apple...
前言 探索完 useState 与 useEffect ,今天就让我们回来继续介绍其他的 React...
PHP运算符 赋值运算符 基本的赋值运算符是“=”。一开始可能会以为它是“等於”,其实不是的。它实际...
本篇大纲:Generator、Component、Layout 截至目前,我们已经学会 D3 如何...