【从零开始的 C 语言笔记】第十五篇-String 函式库介绍与应用

不怎麽重要的前言

上一篇我们介绍了array的延伸应用,利用字元阵列我们可以当作储存字串的工具。

今天我们来介绍一下字串(String)相关的应用--String函式库!


String 函式库

<string.h>是一个包含了许多字串应用的函式库,这个函式库可以让你复制一个字串的内容到另一个字串、合并字串、分割字串、计算字串长度、比较字串是否相等,这些都可以在<math.h>中找到对应函式来协助处理,可以省去很多不必要的麻烦。

  1. 介绍

(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)
  1. 实际应用
#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;
 }

https://ithelp.ithome.com.tw/upload/images/20211028/20142565L8sGgLI7I6.png


辛苦看到这里的你,如果觉得比较难懂,可以参考上面的程序码,或者自己测试看看喔!

下一篇我们来介绍什麽是二维Array!


<<:  Leetcode: 226. Invert Binary Tree

>>:  【从零开始的 C 语言笔记】第十六篇-二维Array

Day23 Let's ODOO: Currency

当我们使用销售或是产品的模组,我们有时候会针对各种货币来做销售单,但这样会造成统计问题,所以Odoo...

Apple 音乐下载到电脑 5 个方法轻松做到【必学】

把 Apple Music 歌曲下载下来,可以让你在没有网路的时候也能收听音乐。想要下载 Apple...

Re: 新手让网页 act 起来: Day18 - React Hooks 之 useRef

前言 探索完 useState 与 useEffect ,今天就让我们回来继续介绍其他的 React...

[Day7]PHP运算符02

PHP运算符 赋值运算符 基本的赋值运算符是“=”。一开始可能会以为它是“等於”,其实不是的。它实际...

Day9-D3绘图:绘制形状的Helper Functions

本篇大纲:Generator、Component、Layout 截至目前,我们已经学会 D3 如何...