美文网首页C Primer Plus(6th)
常见字符串处理函数strlen/strcat/strcmp/me

常见字符串处理函数strlen/strcat/strcmp/me

作者: akuan | 来源:发表于2020-12-09 16:33 被阅读0次

    strlen
    C 标准库 - <string.h>
    描述
    计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
    声明
    size_t strlen(const char *str)
    参数
    str -- 要计算长度的字符串。
    返回值
    返回字符串的长度。

    #include <stdio.h>
    #include <string.h>
    int main () {
       char str[50];
       int len;
       strcpy(str, "This is w3cschool.cn");
       len = strlen(str);
       printf("|%s| 的长度是 |%d|\n", str, len);
       return 0;
    }
    
    |This is w3cschool.cn| 的长度是 |20|
    

    ——————————————————————————————
    strcat
    C 标准库 - <string.h>
    描述
    src 所指向的字符串追加到 dest 所指向的字符串的结尾。
    声明
    char *strcat(char *dest, const char *src)
    参数
    dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
    src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。
    返回值
    返回一个指向最终的目标字符串 dest 的指针。

    #include <stdio.h>
    #include <string.h>
    int main () {
       char src[50], dest[50];
       strcpy(src,  "This is source");
       strcpy(dest, "This is destination");
       strcat(dest, src);
       printf("最终的目标字符串: |%s|", dest);
       return(0);
    }
    
    最终的目标字符串: |This is destinationThis is source|
    

    ——————————————————————————————
    strncat
    C 标准库 - <string.h>
    描述
    把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
    声明
    char *strncat(char *dest, const char *src, size_t n)
    参数
    dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串,包括额外的空字符。
    src -- 要追加的字符串。
    n -- 要追加的最大字符数。
    返回值
    返回一个指向最终的目标字符串 dest 的指针。

    #include <stdio.h>
    #include <string.h>
    int main () {
       char src[50], dest[50];
       strcpy(src,  "This is source");
       strcpy(dest, "This is destination");
       strncat(dest, src, 12);
       printf("最终的目标字符串: |%s|", dest);
       return(0);
    }
    
    最终的目标字符串: |This is destinationThis is sour|
    

    ——————————————————————————————
    strcmp
    C 标准库 - <string.h>
    描述
    str1 所指向的字符串和 str2 所指向的字符串进行比较。
    声明
    int strcmp(const char *str1, const char *str2)
    参数
    str1 -- 要进行比较的第一个字符串。
    str2 -- 要进行比较的第二个字符串。
    返回值
    如果返回值< 0,则表示 str1 小于 str2
    如果返回值> 0,则表示 str2 小于 str1
    如果返回值= 0,则表示 str1 等于 str2

    #include <stdio.h>
    #include <string.h>
    int main () {
       char str1[15];
       char str2[15];
       int ret;
       strcpy(str1, "amy");
       strcpy(str2, "anx");
       ret = strcmp(str1, str2);
       if (ret < 0) {
          printf("str1 小于 str2");
       } else if (ret > 0) {
          printf("str2 小于 str1");
       } else {
          printf("str1 等于 str2");
       }
       return(0);
    }
    
    str1 小于 str2
    

    ——————————————————————————————
    strncmp
    C 标准库 - <string.h>
    描述
    str1str2 进行比较,最多比较前 n 个字符。
    声明
    int strncmp(const char *str1, const char *str2, size_t n)
    参数
    str1 -- 要进行比较的第一个字符串。
    str2 -- 要进行比较的第二个字符串。
    n -- 要比较的最大字符数。
    返回值
    如果返回值< 0,则表示 str1 小于 str2
    如果返回值> 0,则表示 str2 小于 str1
    如果返回值= 0,则表示 str1 等于 str2

    #include <stdio.h>
    #include <string.h>
    int main () {
       char str1[15];
       char str2[15];
       int ret;
       strcpy(str1, "aBy1234");
       strcpy(str2, "abx5678");
       ret = strncmp(str1, str2, 4);
       if (ret < 0) {
          printf("str1 小于 str2");
       }
       else if (ret > 0) {
          printf("str2 小于 str1");
       } else {
          printf("str1 等于 str2");
       }
       return(0);
    }
    
    str1 小于 str2
    

    ——————————————————————————————
    memset
    C 标准库 - <string.h>
    描述
    复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。
    声明
    void *memset(void *str, int c, size_t n)
    参数
    str -- 指向要填充的内存块。
    c -- 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。
    n -- 要被设置为该值(c)的字符数。
    返回值
    返回一个指向存储区 str 的指针。

    #include <stdio.h>
    #include <string.h>
    int main () {
       char str[50];
       strcpy(str,"This is string.h library function");
       puts(str);
       memset(str,'$',7);
       puts(str);
       return(0);
    }
    
    This is string.h library function
    $$$$$$$ string.h library function
    

    ——————————————————————————————
    strcpy
    C 标准库 - <string.h>
    描述
    src 所指向的字符串复制到 dest
    声明
    char *strcpy(char *dest, const char *src)
    参数
    dest -- 指向用于存储复制内容的目标数组。
    src -- 要复制的字符串。
    返回值
    返回一个指向最终的目标字符串 dest 的指针。

    #include <stdio.h>
    #include <string.h>
    int main() {
       char src[40];
       char dest[100];
       strcpy(src, "This is w3cschool.cn");
       strcpy(dest, src);
       printf("最终的目标字符串: %s\n", dest);
       return(0);
    }
    
    最终的目标字符串: This is w3cschool.cn
    

    ——————————————————————————————
    strncpy
    C 标准库 - <string.h>
    描述
    src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
    声明
    char *strncpy(char *dest, const char *src, size_t n)
    参数
    dest -- 指向用于存储复制内容的目标数组。
    src -- 要复制的字符串。
    n -- 要从源中复制的字符数。
    返回值
    返回最终复制的字符串。

    #include <stdio.h>
    #include <string.h>
    int main() {
       char src[40];
       char dest[12];
       memset(dest, '\0', sizeof(dest));
       strcpy(src, "This is w3cschool.cn");
       strncpy(dest, src, 10);
       printf("最终的目标字符串: %s\n", dest);
       return(0);
    }
    
    最终的目标字符串: This is w3
    

    ——————————————————————————————
    strchr (chr:character的缩写)
    C 标准库 - <string.h>
    描述
    在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。
    声明
    char *strchr(const char *str, int c)
    参数
    str -- 要被检索的 C 字符串。
    c -- 在 str 中要搜索的字符。
    返回值
    返回在字符串 str 中第一次出现字符 c 的位置,如果未找到该字符则返回 NULL

    #include <stdio.h>
    #include <string.h>
    int main () {
       const char str[] = "http://www.w3cschool.cn";
       const char ch = '.';
       char *ret = strchr(str, ch);
       printf("|%c| 之后的字符串是 - |%s|\n", ch, ret);
       return(0);
    }
    
    |.| 之后的字符串是 - |.w3cschool.cn|
    

    ——————————————————————————————
    strrchr
    C 标准库 - <string.h>
    描述
    在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。
    声明
    char *strrchr(const char *str, int c)
    参数
    str -- C 字符串。
    c -- 要搜索的字符。以 int 形式传递,但是最终会转换回 char 形式。
    返回值
    返回 str 中最后一次出现字符 c 的位置。乳沟未找到该值,则函数返回一个空指针。

    #include <stdio.h>
    #include <string.h>
    int main () {
       int len;
       const char str[] = "http://www.w3cschool.cn";
       const char ch = '.';
       char *ret = strrchr(str, ch);
       printf("|%c| 之后的字符串是 - |%s|\n", ch, ret);
       return(0);
    }
    
    |.| 之后的字符串是 - |.cn|
    

    ——————————————————————————————
    strstr
    C 标准库 - <string.h>
    描述
    在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 '\0'。
    声明
    char *strstr(const char *haystack, const char *needle)
    参数
    haystack -- 要被检索的 C 字符串。
    needle -- 在 haystack 字符串内要搜索的小字符串。
    返回值
    返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回NULL

    #include <stdio.h>
    #include <string.h>
    int main() {
       const char haystack[20] = "W3CSchool";
       const char needle[10] = "School";
       char *ret = strstr(haystack, needle);
       printf("子字符串是: %s\n", ret);
       return(0);
    }
    
    子字符串是: School
    

    ——————————————————————————————
    sprintf
    C 标准库 - <stdio.h>
    描述
    发送格式化输出到 str 所指向的字符串。
    声明
    int sprintf(char *str, const char *format, ...)
    参数
    str -- 这是指向一个字符数组的指针,该数组存储了 C 字符串。
    format -- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是 %[flags][width][.precision][length]specifier
    附加参数 -- 根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。
    返回值
    如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回一个负数。

    #include <stdio.h>
    #include <math.h>
    int main() {
       char str[80];
       sprintf(str, "Pi 的值 = %f", M_PI);
       puts(str);
       return(0);
    }
    
    Pi 的值 = 3.141593
    

    相关文章

      网友评论

        本文标题:常见字符串处理函数strlen/strcat/strcmp/me

        本文链接:https://www.haomeiwen.com/subject/eohhgktx.html